次のコードがある場合:
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) はおかしくなり、killall Python
. ここで何が起こっているのか分かりますか?
(これを重複としてマークしている人には、他の質問が if __name__=='__main__'
一般的な目的を尋ねる一方で、ここでそれを使用しないと劇的に予期しない動作が発生する理由を具体的に尋ねていることに注意してください)