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

时间:2018-05-12 15:36:48

标签: numpy cython python-multiprocessing ctype structured-array

我有一个 numpy结构化数组,其dtype包含多个具有不同数据类型的字段。我想在我的 python multiprocesses 中更新这个结构化的numpy数组。我想我将使用。我可以用什么方式来分享这个numpy结构化数组呢? 我已经阅读了一些关于在 Ctype数组中包装numpy数组的页面,但我认为没有合适的ctype。
我可以将此数组作为指针传递吗?我还想在 cython 中将该函数编写为worker进程。

代码示例如下:

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

0 个答案:

没有答案