pool.map()不识别主线程中声明的变量
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pool.map()不识别主线程中声明的变量相关的知识,希望对你有一定的参考价值。
所以我们举个例子说:
import multiprocessing
def process(lines):
print(something)
if __name__ == '__main__':
something = 'something'
pool = multiprocessing.Pool(10)
with open(r'C:Usersa estfiles est.txt') as lines:
pool.map(process, lines)
我得到一个NameError:名称'something'未定义。
任何人都知道为什么会这样,并知道修复?
答案
multiprocessing.Pool
不是一个线程池,它是一个进程池。 Windows不支持分叉,因此您必须明确地将something
传递给新进程。
如果要使用线程池,请改用from multiprocessing.dummy import Pool
。
以上是关于pool.map()不识别主线程中声明的变量的主要内容,如果未能解决你的问题,请参考以下文章