Как разделить массивный структурированный массив среди многопроцессорных процессов Python? - PullRequest
0 голосов
/ 12 мая 2018

У меня есть numpy структурированный массив , у которого dtype имеет несколько полей с различным типом данных.И я хочу обновить этот структурированный массив NumPy в моих многопроцессных Python .И я думаю, что я собираюсь использовать Pool .Каким образом я могу использовать этот общий структурированный массив?
Я прочитал несколько страниц об обёртывании массива numpy в Ctype Array , но я не думаю, что для этого есть подходящий 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...