2017-04-17 4 views
0

오늘 멀티 프로세싱 모듈에 대해 배우기 시작했는데이 코드를 시도했지만 작동하지 않았고 왜 어떤 오류가 발생하지 않았는지 또는 그 일을 막지 못하는 이유를 모르겠습니다. 내가이 수행 할 때다중 처리가 시작되지 않음

import multiprocessing 
def x(): 
    print ("hi") 
example=multiprocessing.Process(target=x) 
example.start() 

작동 : 일반적으로 여기에 어떤 일을 인쇄 밖으로 프로그램 내 간단한 코드입니다

import multiprocessing 
def x(): 
    print ("hi") 
example=multiprocessing.Process(target=x()) 

을하지만 난이를 사용할 필요가 있기 때문에 그런 식으로 나에게 도움이되지 않습니다 join()start()

내가 할 파이썬 REPL에서 실행

및 파이썬 3.5.2

+0

'example.join()'을 추가하면 작동합니까? –

+0

첫 번째 예제가 작동하지 않는 이유는 무엇입니까? 어떤 오류가 발생합니까? –

+0

아니오 example.join()을 추가해도 동일한 작업을 수행 할 수 있습니다. 모든 인쇄 작업을 정상적으로 종료 할 수 있습니다. –

답변

0

음을 사용하고, 당신은 여전히 ​​start을 사용할 수 있으며 join

import multiprocessing 
def x(): 
    print ("hi") 
example=multiprocessing.Process(target=x) 
example.start() # START 
example.join() # JOIN 

,

>>> import multiprocessing 
>>> def x(): 
...  print ("hi") 
... 
>>> example=multiprocessing.Process(target=x) 
>>> example.start(); example.join() 
hi 
>>> 

유일한 이유 두 번째 예제는 x (알림 target=x()target=x)을 호출하기 때문에 작동하는 것 같습니다.

첫 번째 예제는 작동하지만 join이 없으면 프로그램은 주 프로세스가 완료된 후 (그러나 하위 프로세스가 완료되기 전에) 종료됩니다. 이것은 좀비 프로세스를 만들고 아마도 표준 출력에 hi을 출력하는 것과 같이 더 많은 작업을하지 못하게 할 것입니다.

+0

그건 당신이 만드는 새로운 것이 아니라 주 프로세스에서'x'를 실행하고 있습니다. – user2357112

+0

그 대구가 당신을 위해 일하는 한 그때 나는 내 컴퓨터 덕분에 문제가 있다고 생각한다. 나는 내일까지 더 많은 답변을 찾지 않을 것이고, 그때 내 컴퓨터에 문제가 없다면 –