关于使用python多处理获取从目标函数返回的numpy数组的建议?

关于使用python多处理获取从目标函数返回的numpy数组的建议?,python,multiprocessing,python-multiprocessing,multiprocessing-manager,Python,Multiprocessing,Python Multiprocessing,Multiprocessing Manager,我对python多处理是完全陌生的,有点被大量的在线资源淹没了,所以我想从这里开始一个更清晰的方法。我的代码如下所示:向前和向后这两个函数在计算上非常昂贵。在我的输入数据集上,每个数据集大约需要13分钟。我想同时计算这两个矩阵(向前和向后,参见decode()函数中的第3行和第4行代码)。我查阅了一些在线教程,我想我可以使用multiprocessing.process来完成这项工作。但是,我不确定如何检索numpy数组。我知道有些东西像队列、数组,但它们的使用似乎有很大的限制,在这里似乎不适合

我对python多处理是完全陌生的,有点被大量的在线资源淹没了,所以我想从这里开始一个更清晰的方法。我的代码如下所示:向前和向后这两个函数在计算上非常昂贵。在我的输入数据集上,每个数据集大约需要13分钟。我想同时计算这两个矩阵(向前和向后,参见decode()函数中的第3行和第4行代码)。我查阅了一些在线教程,我想我可以使用multiprocessing.process来完成这项工作。但是,我不确定如何检索numpy数组。我知道有些东西像队列、数组,但它们的使用似乎有很大的限制,在这里似乎不适合。提前谢谢! '''


''

如果您只是使用一个矩阵,我不确定数组对多处理有什么限制。它并不完整,但这将是一个想法

from multiprocessing.sharedctypes import RawArray

#make some empty arrays 
yourMat = RawArray('d', X_size) 
resultMat = RawArray('d', X_size) 

...
ptemp=multiprocessing.Process(target=backward, args=(yourMat ,resultMat ))
ptemp.daemon=True
ptemp.start()

...

data = np.frombuffer(yourMat, dtype=np.float64)
#do something with data
resultMat [i:j] = data 

...

#get the data
results = np.frombuffer(resultMat , dtype='i')
你可以查看这篇文章以获得完整的示例:

from multiprocessing.sharedctypes import RawArray

#make some empty arrays 
yourMat = RawArray('d', X_size) 
resultMat = RawArray('d', X_size) 

...
ptemp=multiprocessing.Process(target=backward, args=(yourMat ,resultMat ))
ptemp.daemon=True
ptemp.start()

...

data = np.frombuffer(yourMat, dtype=np.float64)
#do something with data
resultMat [i:j] = data 

...

#get the data
results = np.frombuffer(resultMat , dtype='i')