2010-01-20 4 views
6

가능한 중복 :
Multiprocessing launching too many instances of Python VM왜 파이썬 다중 처리 모듈로 인해 CPU가 완전히 소모됩니까?

나는이 간단한 코드로 파이썬 2.6 멀티 프로세싱 모듈을하려합니다.

from multiprocessing import Pool 
p = Pool(5) 
def f(x): 
    return x*x 

print p.map(f, [1,2,3]) 

그러나이 코드는 내 OS가 응답을 중지하게 만듭니다. CPU가 너무 바쁜 것 같습니다. 내 코드에 어떤 문제가 있습니까?

참고 사항 : 다중 처리 모듈은 약간 위험한 것으로 보입니다. 컴퓨터를 다시 시작해야했습니다.

답변

7

엔트리 포인트를 전혀 보호하지 않으므로 각 서브 프로세스가 동일한 map 호출을 시작하려고합니다 (무한대로!). 다음을 시도하십시오.

if __name__ == "__main__": 
    print p.map(f, [1,2,3]) 

모듈 설명서의 this section을 참조하십시오.

+0

@ 트렌드 : 그다지 좋지 않음 :) – jkp

+0

이 부분을 참조하십시오 : http://stackoverflow.com/questions/1923706/multiprocessing-launching-too-many-instances-of-python-vm –

관련 문제