2013-08-07 4 views
0

멀티 프로세싱을 프로젝트에 통합하려고하는데 작동하지 않습니다. 이것은 내가있어 무엇 :파이썬 다중 처리가 너무 일찍 종료 됨

import time 
import winsound 
from multiprocessing import Process 
winsound.MessageBeep() 
def pr1(): 
    while 1: 
     winsound.MessageBeep() 
     time.sleep(0.5) 
if __name__ == '__main__': 
    p = Process(target=pr1, args=()) 
    p.start() 
    p.join() 

while 1: 
    print('hey') 

을하지만 난 그것을 실행하면 내가 하나의 삐 소리와 내가 그것을 반복합니다. 어떻게해야합니까?

해두 플랜 B, 지금이 있는데 나는 단지 올바른 얻을 :

import time 
import winsound 
from multiprocessing import Process 
def pr1(): 
    while 1: 
     winsound.MessageBeep() 
     print('its working') 
     time.sleep(0.5) 
if __name__ == '__main__': 
    print('correct') 
    p = Process(target=pr1, args=()) 
    p.start() 
    p.join() 

while 1: 
    print('hey') 

그래서 프로세스의 만드는 뭔가 문제가있다. 아이디어가 있으십니까?

+0

'__name__ =='__main __ ':'이 (가) 작동하는 경우? – eri

+0

Windows가 아니기 때문에 확인할 수는 없지만 제대로 작동하는 것처럼 보입니다. 'winsound.MessageBeep()'를 호출하기 전이나 후에 print 문을 추가하면 어떻게됩니까? 인쇄물을 볼 수 있습니까? – piokuc

+0

이 이상한데, 나는 파이썬 문서 페이지에서'print hello' 예제를 사용할 수 없다. 나는 멀티 프로세싱을 사용한 적이 없지만 스레딩을 사용했습니다. 그것이 당신의 필요를 충족시킬 지 확신 할 수 없지만, 그것은 잘 작동합니다. http://www.tutorialspoint.com/python/python_multithreading.htm – pedram

답변

2

들여 최종

while 1: 
    print('hey') 

는 그것을 if - 블록

의 일부 모듈의 내용이 먼저 실행되고 target로 주어진 호출하기 전에 실행되는 Windows에서 자식 프로세스를 시작하게합니다. 모듈은 결코 실행을 끝내지 않기 때문에 이런 일은 일어나지 않습니다.

전체 두 번째 조각은 다음이된다 : 일반적으로 프로세스의 출력이 정상적으로 버퍼링 때문에

import time 
import winsound 
from multiprocessing import Process 
def pr1(): 
    while 1: 
     winsound.MessageBeep() 
     print('its working') 
     time.sleep(0.5) 
if __name__ == '__main__': 
    print('correct') 
    p = Process(target=pr1, args=()) 
    p.start() 
    p.join() 

    while 1: 
     print('hey') 
+0

무슨 뜻인지 모르겠다. 들여 쓰기 while 문, northing 발생하거나 이동해야합니까? –

+0

@CvR_XX 들여 쓰기하면'if' 문이 참일 때만 실행됩니다 (부모 프로세스에서만 발생합니다). 두 번째 코드 스 니펫으로 시도해 보았습니다. –

+0

조금 졸린 수 있지만 아직 이해가 안됩니다. 두 번째 발췌 문장을 편집 내용과 함께 게시하십시오. –

0

, 당신은 버퍼를 플래시하는 데 필요한 "의 작업"메시지를 표시합니다.

import time 
import winsound 
from multiprocessing import Process 
import sys 
def pr1(): 
    while 1: 
     winsound.MessageBeep() 
     print('its working') 
     time.sleep(0.5) 
     sys.stdout.flush() 
if __name__ == '__main__': 
    print('correct') 
    p = Process(target=pr1, args=()) 
    p.start() 
    p.join() 
관련 문제