Python多处理无法访问if __name__ ==" main"中定义的变量。

时间:2018-03-11 04:40:58

标签: python multiprocessing

我使用的是Windows。我不明白为什么以下代码失败。

a,在&#34中定义;如果是主要"块,应该是一个全局变量。但是运行脚本我得到错误" a未定义"。但是,如果{&1}}定义在"如果主要"之外。阻止,代码将起作用。

a

1 个答案:

答案 0 :(得分:2)

只有主线程有__name__=='__main__'。其他子线程从生成的进程导入代码,而不将__name__设置为__main__。这是故意的,并且在Windows(其中fork()不可用)中是必需的,以提供执行代码的机制,例如仅在父代中初始化池。请参阅此处的讨论:Workaround for using __name__=='__main__' in Python multiprocessing