问题描述
我正在与一个 DAQ 设备进行交互,该设备接收数字数据集并输出相应的波形。
代码的工作部分如下:
#windows buffer allocation through 3rd part library. num_points is total length of 1D array
memhandle = ul.win_buf_alloc(num_points)
#cast an array to take C ushort variables to allocated memory
data_array = ctypes.cast(memhandle,ctypes.POINTER(ctypes.c_ushort))
#assign array with calculated signals
for i in range(0,num_points):
data_array[i] = np.int(np.around(32768 + signals[i] * 3061.8))
#At last,3rd party function to grab assigned values through memhandle and output
ul.a_out_scan(board_num,low_chan,high_chan,num_points,daq_rate,ul_range,memhandle,Scanoptions)
# Free the buffer and set the data_array to None
ul.win_buf_free(memhandle)
data_array = None
就我而言,for 循环范围(或 num_points)非常大(约 100 万个)并且需要几秒钟才能执行。是否可以在没有 for 循环的情况下一次传递整个数组以使其更快?
我尝试了几个选项,但我对 ctypes、指针和内存处理的有限理解使我无法找到解决方案。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)