如果我有以下代码:
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 进程,直到 I killall Python
. 知道这里发生了什么吗?
(对于那些将其标记为重复的人,请注意,虽然另一个问题 if __name__=='__main__'
一般是问目的,但我特意问的是为什么未能在此处使用它会导致出乎意料的行为)