我有一个numpy 结构化数组,其 dtype 具有不同数据类型的多个字段。我想在我的python multiprocesses中更新这个结构化的 numpy 数组。我想我会使用Pool。我可以用什么方式来共享这个 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