如何在没有 for 循环的情况下快速分配 ctypes 转换数组在 python 中

问题描述

我正在与一个 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 (将#修改为@)