python - Python多处理:如果'__name__' == '__main__' bock,使用池调用的函数无法访问内部声明的全局变量
问题描述
我试图从一个由类对象调用的函数访问声明的global variable
内部块。if __name__ == '__main__'
Pool
multiprocessing
但它抛出NameError
。
但是,如果我将相同的变量放在块之外,代码就可以正常工作。
演示:
- 当在
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
- 在内部声明时
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
解决方案
推荐阅读
- powershell - 带有脚本块和正则表达式替换的奇怪的 powershell 行为
- flutter - 如何清除 Flutter 中的导航堆栈
- laravel - Laravel 属性未按预期工作
- jenkins - build.gradle 上的依赖特性
- sql-server - 如何转换文本格式以使用 Visual Studio 在 SSAS 上自定义日期格式以在表格中显示?
- r - R Shiny 从动态创建的 ahref 标签下载文件 - 未找到错误
- java - DAO 在大气的 ManagedService 中为空?
- c++ - C++ - 编写代码时提示过多
- java - 如何在构建期间修复此 Duplicate class 错误?
- reactjs - Web 应用程序花费太长时间来确定用户是否经过身份验证