在Python中如何在多处理过程中访问全局变量

2024-09-29 20:17:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Python中使用多处理编写了以下玩具代码。在

我希望函数func并行运行,并写入全局变量:varvarr和{}。 但是下面的代码只为varvarrvarrr打印零。在

如何使func修改全局变量varvarr和{}???在

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')

Tags: 代码importvarasnpzerosmplist
1条回答
网友
1楼 · 发布于 2024-09-29 20:17:37

正如一些评论已经提到的,多处理不共享内存(即,您不能从进程内部访问全局变量)。 可以使用管道在进程之间共享信息。在

另一个选择是使用线程(共享内存)。 但是,由于全局解释器锁定,这在技术上不会完全并行运行。在

相关问题 更多 >

    热门问题