python - 无法获得 Python 多处理数组输出的完整副本
问题描述
我编写了简单的 Python 多处理来测试它是如何工作的: 多处理仅适用于第一次迭代。我将一些数组包装在一个函数中,然后我调用多处理映射以使用 5 个处理器对其进行处理。除了每个数组的 5 个副本的输出之外,所有这些都很好。关于如何返回每个数组的一个实例而不是五个实例的任何想法。我想知道是否有一种通用的方法可以使进程相互通信。
import numpy as np
import multiprocessing as mp
B=np.full((5,4,4),np.nan)
C=np.full((5,4,4),np.nan)
D=np.full((5,4,4),np.nan)
def job1(i):
print(i)
A=np.ones((4,4))
B[i,:,:]=A+1
C[i,:,:]=2*A+2
D[i,:,:]=A+5
return B,C,D
#%%
P=mp.Pool(5)
result=P.map(job1,np.arange(5))
P.close()
P.join()
result[0]
(array([[[ 2., 2., 2., 2.],
[ 2., 2., 2., 2.],
[ 2., 2., 2., 2.],
[ 2., 2., 2., 2.]],
[[nan, nan, nan, nan],
[nan, nan, nan, nan],
[nan, nan, nan, nan],
[nan, nan, nan, nan]],
[[nan, nan, nan, nan],
[nan, nan, nan, nan],
[nan, nan, nan, nan],
[nan, nan, nan, nan]],
[[nan, nan, nan, nan],
[nan, nan, nan, nan],
[nan, nan, nan, nan],
[nan, nan, nan, nan]],
[[nan, nan, nan, nan],
[nan, nan, nan, nan],
[nan, nan, nan, nan],
[nan, nan, nan, nan]]]),
解决方案
推荐阅读
- amazon-web-services - 从 AWS 托管批处理作业中获取实例类型
- c# - 为什么我不能指定从 AC# 函数返回的数组的大小?
- c - 为什么我们没有ccflags-m,而是ccflags-y?
- c# - Visual Studio 2019 历史调试不适用于 Fip
- powershell - 如何从另一台机器上的另一个 IIS 实例导入 IIS 处理程序映射?
- c# - BItwise Operator,左移和右移如何工作
- java - android moto G (3rd Generation) 中的 DateFormat 问题,登录日期
- excel - 复制并粘贴到下一个空行
- javascript - 如何从数组中找到对象的数组属性值的总和?
- r - 从逐步回归的所有模型中提取 AIC