python下多进程时全局变量在子进程怎么能更新?遇到从子进程更

如题所述

请问,全局变量不在子进程里更新,但是在子进程使用的时候,全局变量没有变化

from collections import defaultdict
__global = 1
def a(x):
    g = __global
    print("x:{}".format(x))
    print("g:{}".format(g))
def b():
    global __global
    __global = 2
    with ProcessPoolExecutor(max_workers=1) as executor:
        executor.map(a, [1, 2])


if __name__ == '__main__':
    b()

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-12-09
在子进程引用声明变量的模块,然后直接用.引用就更新了
第2个回答  推荐于2017-09-29
多线程的需要用 锁,
子进程(函数、类中需要使用 global声明全局变量)
如:
num=0 #全局
lockOne=threading.Lock()#对象不需要子函数中什么全局
def subPro():
global num
lockOne.acquire()
num+=1
lockOne.release()

...本回答被提问者和网友采纳
第3个回答  2014-12-09
子进程Global 全局变量名?