【发布时间】:2019-01-11 06:51:42
【问题描述】:
我在 Python 中使用多处理编写了以下玩具代码。
我希望函数func 并行运行并写入全局变量:var、varr 和varrr。
然而,下面的代码只为var、varr 和varrr 打印零。
如何让func修改全局变量var、varr和varrr???
import multiprocessing as mp
import itertools
import numpy as np
p = 3
ind = range(p)
ind_list = list(itertools.product(ind,ind,ind))
var = np.zeros([p,p,p])
varr = np.zeros([p,p,p])
varrr = np.zeros([p,p,p])
def func(ind_list):
global var, varr, varrr
i = ind_list[0]
j = ind_list[1]
k = ind_list[2]
var[i][j] = i + j + k
varr[i][j] = i*j*k
varrr[i][j] = 2*i*j*k
for a in range(p):
pool = mp.Pool()
pool.map(func,ind_list)
pool.close()
pool.join()
print('\n\n',var,'\n\n',varr,'\n\n',varrr,'\n\n')
【问题讨论】:
-
进程有独立的内存空间。它们不共享全局变量。还有其他方法可以在进程之间共享数据。
-
@Mathieu 请帮我修改代码以使其正常工作。
标签: python variables multiprocessing global