Python Numpy/Scipy中管道或流阵列的方式

Python Numpy/Scipy中管道或流阵列的方式,python,numpy,adafruit,Python,Numpy,Adafruit,这是我的特定用例,可以更好地解释这个问题,但我正在寻找一个通用的解决方案 我正在使用一个带有adafruit LED显示屏的树莓Pi,它显示一个RGB矩阵。这段代码在Python 2中。我有一个python脚本,它每1/n秒生成一次RGB数据 是否有一个包或库允许我在一个进程中以np.ndarray的形式连续生成RGB数据,并让矩阵脚本轮询它,以便它对numpy阵列进行近实时的进程间通信 一个简单而快速的解决方案是使用numpy.memmap。它只是创建一个存储在磁盘二进制文件中的数组的内存映射

这是我的特定用例,可以更好地解释这个问题,但我正在寻找一个通用的解决方案

我正在使用一个带有adafruit LED显示屏的树莓Pi,它显示一个RGB矩阵。这段代码在Python 2中。我有一个python脚本,它每1/n秒生成一次RGB数据


是否有一个包或库允许我在一个进程中以np.ndarray的形式连续生成RGB数据,并让矩阵脚本轮询它,以便它对numpy阵列进行近实时的进程间通信

一个简单而快速的解决方案是使用numpy.memmap。它只是创建一个存储在磁盘二进制文件中的数组的内存映射。通过这种方式,您可以在进程之间轻松、快速地共享numpy阵列

例如,生成RGB数据的主要过程可以是:

将numpy作为np导入 myshape=100100,3我的RGB阵列 shared_array=np.memmap/tmp/testarray,mode='w+',shape=myshape 尽管如此: data=some_function_to_get_rgb_data返回myshape的numpy数组 共享_数组[:]=数据[:] 读取该数组的另一个进程可以是:

将numpy作为np导入 读取形状=100100,3 共享数组=np.memmap/tmp/testarray,mode='r',shape=read\u shape 尽管如此: 共享_数组将作为numpy数组 用数组共享数组做什么 只考虑形状必须匹配,并且数组的数据类型可以传递给memmap函数,并且创建文件的进程必须首先运行。实际上,在主进程中对共享_数组所做的任何更改都将很快反映在另一个进程中


我所做的测试是,将480360,21阵列与4个进程同时共享—从该阵列读取和写入数据的时间不到1毫秒。

为什么会出现这种情况?为什么您会担心代码看起来在做什么?您是否试图假装您的代码在进程之间传输数据?抱歉,这是非常糟糕的措辞。我的用例是可视的,但这与我的问题无关。我希望在同一台机器上使用numpy/scipy阵列进行某种同步的进程间通信。请随意忽略关于覆盆子圆周率的一切,如果它让人更困惑的话,我只是觉得其他圆周率的人以前可能也做过类似的事情。