2013-05-06 3 views
7

은 "sys.modules에하지, main_name을 main_name을 주장"Windows에서 파이썬 2.7, 간단한 코드가 다음의 모든 멀티 프로세싱 예

from multiprocessing import Process, freeze_support 

def foo(): 
    print 'hello' 

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

그것은 파이썬 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을 사용할 수 있지만이 경우 올바르게 작동하지 않을 수 있습니다. –

관련 문제