我使用的是Windows。我不明白为什么以下代码失败。
a
,在&#34中定义;如果是主要"块,应该是一个全局变量。但是运行脚本我得到错误" a未定义"。但是,如果{&1}}定义在"如果主要"之外。阻止,代码将起作用。
a
答案 0 :(得分:2)
只有主线程有__name__=='__main__'
。其他子线程从生成的进程导入代码,而不将__name__
设置为__main__
。这是故意的,并且在Windows(其中fork()
不可用)中是必需的,以提供执行代码的机制,例如仅在父代中初始化池。请参阅此处的讨论:Workaround for using __name__=='__main__' in Python multiprocessing