如果我有以下代码:
脚本的行为符合预期,会打印“ok!”并结束。但是如果我省略
def f():
print 'ok!'
import sys
sys.exit()
if __name__=='__main__':
import billiard
billiard.forking_enable(0)
p = billiard.Process( target=f)
p.start()
while p.is_alive():
pass
脚本的行为符合预期,会打印“ok!”并结束。但是如果我省略
if __name__=='__main__':
这一行,并将其后面的代码减少缩进,则我的机器(OS X)会发疯,不断生成大量 Python 进程,直到我使用 killall Python
命令终止它们。这是怎么回事呢?(请注意,虽然其他问题通常询问 if __name__=='__main__'
的用途,但我特别询问为什么在此处不使用它会导致极其意外的行为。)