如何在python多进程之间共享numpy结构化数组?

如何在python多进程之间共享numpy结构化数组?,numpy,cython,python-multiprocessing,ctype,structured-array,Numpy,Cython,Python Multiprocessing,Ctype,Structured Array,我有一个numpy结构化数组,它的数据类型有多个具有不同数据类型的字段。我想在我的python多进程中更新这个结构化numpy数组。我想我要用游泳池。我可以使用什么方式共享此numpy结构化阵列? 我读过一些关于在Ctype array中包装numpy数组的文章,但我认为没有合适的Ctype 我可以把这个数组作为指针传递吗?我还想在cython中编写作为工作进程的函数 代码示例如下所示: import numpy as np import multiprocessing as mp def m

我有一个numpy结构化数组,它的数据类型有多个具有不同数据类型的字段。我想在我的python多进程中更新这个结构化numpy数组。我想我要用游泳池。我可以使用什么方式共享此numpy结构化阵列?
我读过一些关于在Ctype array中包装numpy数组的文章,但我认为没有合适的Ctype 我可以把这个数组作为指针传递吗?我还想在cython
中编写作为工作进程的函数

代码示例如下所示:

import numpy as np
import multiprocessing as mp

def modi(arg):
    i,pt = arg
    if pt['mdistance'][0] == 4:
        return i
    pt['distance'] += 2

if __name__ == '__main__':
    eetype=[('coordinate', 'f8', (2,)), ('file_id', '<U11'), ('distance', 'f8', (2,))]
    aa= np.zeros(5, dtype=eetype)
    aa['file_id']=np.array(['aa', 'bb', 'cc', 'dd', 'ee'])
    aa['coordinate']=np.array([[1,1],[2,2],[3,3],[4,4],[5,5]])
    aa['distance']=np.array([[1,1],[2,2],[3,3],[4,4],[5,5]])
    print(aa)
    with mp.Pool(4) as p:
        a=list(p.map(modi, enumerate(aa)))
        #this aa array should be shared in different processes
将numpy导入为np
将多处理作为mp导入
def modi(参数):
i、 pt=arg
如果pt['mdistance'][0]==4:
返回i
pt['distance']+=2
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':

eetype=[(‘坐标’,‘f8’,(2,),('file_id',最近的几个SO问题想使用
mp.Array
来共享numpy数组。这并不像人们希望的那样有效,因为该类在内存中创建了一个新的缓冲区,并将一个iteray复制到其中。因此它不保留
ndarray
属性。它不是
视图或指针。进程不共享内存。Rea多线程技术