pool.map()无法识别主线程中声明的变量

时间:2018-08-28 09:24:28

标签: python multithreading multiprocessing

因此,例如:

import multiprocessing

def process(lines):
    print(something)

if __name__ == '__main__':
    something = 'something'
    pool = multiprocessing.Pool(10)
    with open(r'C:\Users\a\testfiles\test.txt') as lines:
            pool.map(process, lines)

我收到一个NameError:名称'something'未定义。

任何人都知道为什么会这样,并且知道解决方法吗?

1 个答案:

答案 0 :(得分:0)

multiprocessing.Pool不是线程池,而是进程池。 Windows不支持分支,因此您必须将something显式传递给新进程。

如果要使用线程池,请改用from multiprocessing.dummy import Pool