2013-05-07 3 views
0

Windows에서 multithreading.pipes()를 지원합니까? 그렇다면이 코드에 어떤 문제가 있습니까? 감소를 사용해야합니까? 코드는 p2.recv()에 멈추고 커맨드 라인에서 RuntimeError를 얻습니다.파이썬이있는 윈도우의 멀티 프로세싱 파이프

import multiprocessing 
def ProcessCreator(pipe): 
    pipe.send("hello from other process") 

p1, p2 = multiprocessing.Pipe() 
proc = multiprocessing.Process(target = ProcessCreator, args = (p2,)) 
proc.start() 
print p1.recv() 

if __name__ == "__main__": 
    multiprocessing.freeze_support() 

답변

1

당신은 에 파이프 코드를 삽입해야하는 경우 __name__ == '__main__' 부분. (Why?) 그리고 변경 p2.recv p1.recv

import multiprocessing 
def ProcessCreator(pipe): 
    pipe.send("hello from other process") 

if __name__ == "__main__": 
    multiprocessing.freeze_support() 
    p1, p2 = multiprocessing.Pipe() 
    proc = multiprocessing.Process(target = ProcessCreator, args = (p2,)) 
    proc.start() 
    print p1.recv()