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()不识别主线程中声明的变量的主要内容,如果未能解决你的问题,请参考以下文章

JSP学习笔记-JSP语法

如何将两个参数传递给 Pool.starmap()?

Python中multiprocessing.Pool运行带多个参数的函数

JSP变量方法和类的声明,JSP程序片,JSP表达式

多线程爬虫

在Python中将多个参数传递给pool.map()函数[重复]