如何解决如何在没有 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 举报,一经查实,本站将立刻删除。