好的,所以我用Python包装了一个C库并调用了相应的DLL 然后我创建了一个for循环,打印出所有60,000个数据点然后崩溃Python。
如何在numpy中创建一个for循环,以便它更快并且不会崩溃python?
这是我已经包装的C库的一小部分示例以及我正在调用的dll:
import ctypes
from ctypes import *
class SParm(Structure):
pass
SParm._fields_ = [
('name', ctypes.c_char_p),
('time', ctypes.POINTER(ctypes.c_float)),
dll.readSParm.argtypes = (POINTER(SFile), c_char_p, c_double, c_double, c_double, POINTER(TTag), c_ushort,)
dll.readSParm.restype = POINTER(SParm)
g = dll.readSParm(SF, ParmName, startTime, stopTime, Null, None, convertType)
这是我创建的Python for循环。
time = (g[0].time)
for i in (time):
print(i)
^这会输出值,然后在完成之前崩溃python
我正在尝试这样的事情:
time = (g[0].time)
for i in (time):
np.savetxt(sys.stdout, i)
但是上面的代码向我抛出了这个错误:
ncol = X.shape[1]
IndexError: tuple index out of range
答案 0 :(得分:0)
这可能不会在第一次尝试时起作用,但我会随着时间的推移编辑问题。尝试以这种方式改变你的for
- 循环:
for i in range(N):
print(i, g[0].time[i])
此处N
是您所知道的确切数据点数量。打印i
的想法是,如果程序仍然崩溃,我们将会知道它在何时发生。