2013-05-06 5 views
7

次の簡単なコードがあります:Windows上のPython 2.7、 "sys.modulesにmain_nameをmain_nameのない主張"

from multiprocessing import Process, freeze_support 

def foo(): 
    print 'hello' 

if __name__ == '__main__': 
    freeze_support() 
    p = Process(target=foo) 
    p.start() 

これは、Python 3.3でLinuxまたはWindows上で良い動作しますが、上の障害が発生したが、 Python 2.7を搭載したWindows。

Traceback (most recent call last): 
    File "<string>", line 1, in <module> 
    File "c:\Python27\lib\multiprocessing\forking.py", line 346, in main 
    prepare(preparation_data) 
    File "c:\Python27\lib\multiprocessing\forking.py", line 454, in prepare 
    assert main_name not in sys.modules, main_name 
AssertionError: thread 

一般的に言えば、私が試したすべてのマルチプロセッシングの例は、このセットアップで失敗しました。どうして?

答えて

10

これは既知のバグです:これは今まで2.7.X.に移植され得るでしょう

http://bugs.python.org/issue10845

わからない場合

+2

これは2.7.11で修正されます - https://hg.python.org/cpython/rev/5d88c1d413b9/ –

+0

@techtonik手掛かりありがとうございます。 'multiprocessing'モジュールが<2.7.10のバージョンでは利用できないということですか? – Zelong

+0

@Zelongそれは利用可能です、ちょうどそれらの場合正しく動作しないことがあります。 –

関連する問題