2013-05-07 2 views
0

Поддерживает ли Windows multithreading.pipes()? Если да, то что не так с этим кодом? Нужно ли использовать сокращение? Код зависает на p2.recv(), и я запускаю RuntimeError при запуске из командной строки.Многопроцессорные трубы на окнах с python

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() 
Смежные вопросы