Python多重处理:如果'__name__'=='__main__'bock,使用池调用的函数无法访问在内部声明的全局变量

时间:2019-08-18 15:23:24

标签: python multiprocessing python-multiprocessing

我正在尝试从函数global variable出于if __name__ == '__main__'的目的调用的函数中访问Pool块内声明的multiprocessing

但是它抛出了NameError

但是,如果我将相同的变量放在块外,代码就可以正常工作。

演示:

  1. if __name__ == '__main__'块外声明时
from multiprocessing import Pool

foo = 'OKAY'

def f(x):
    print(foo)
    return x*x

if __name__ == '__main__':
    p = Pool(2)

    p.map(f, [1, 2])

输出:

OKAY
OKAY
  1. if __name__ == '__main__'中声明时:
from multiprocessing import Pool

def f(x):
    print(foo)
    return x*x

if __name__ == '__main__':
    foo = 'OKAY'
    p = Pool(2)
    p.map(f, [1, 2])


输出:

NameError: name 'foo' is not defined

0 个答案:

没有答案