2024-06-06 04:17:20 发布
网友
这是我用来更好地解释问题的特定用例,但是我正在寻找一个通用的解决方案。在
我使用的是带有adafruit LED显示屏的覆盆子Pi,它显示一个RGB矩阵(这段代码是python2编写的)。我有一个python脚本,它每1/n秒生成一次RGB数据。在
是否有一个包或库允许我以np.ndarray公司在一个进程中,让它由矩阵脚本轮询,这样它就可以进行numpy数组的近乎实时的进程间通信。在
一个简单而快速的解决方案是使用numpy.memmaplibrary。它只是创建一个存储在磁盘上二进制文件中的数组的内存映射。通过这种方式,您可以在进程之间共享numpy数组,非常容易而且速度非常快。在
numpy.memmap
例如,生成RGB数据的主进程可以是:
import numpy as np myshape = (100,100,3) # my RGB array shared_array = np.memmap("/tmp/testarray", mode='w+', shape=myshape) while True: data = some_function_to_get_rgb_data() # returns a numpy array of myshape shared_array[:] = data[:]
读取该数组的另一个过程可以是:
只需考虑形状必须匹配(数组的dtype可以传递给memmap函数),并且必须首先运行创建文件的进程。在实践中,对主进程中的shared_array所做的任何更改都将很快反映到另一个进程中。在
dtype
memmap
shared_array
我所做的测试共享一个(480360,21)数组,同时有4个进程从该数组读写所需时间不到1毫秒。在
一个简单而快速的解决方案是使用
numpy.memmap
library。它只是创建一个存储在磁盘上二进制文件中的数组的内存映射。通过这种方式,您可以在进程之间共享numpy数组,非常容易而且速度非常快。在例如,生成RGB数据的主进程可以是:
读取该数组的另一个过程可以是:
^{pr2}$只需考虑形状必须匹配(数组的
dtype
可以传递给memmap
函数),并且必须首先运行创建文件的进程。在实践中,对主进程中的shared_array
所做的任何更改都将很快反映到另一个进程中。在我所做的测试共享一个(480360,21)数组,同时有4个进程从该数组读写所需时间不到1毫秒。在
相关问题 更多 >
编程相关推荐