这是针对Python 3.2.2的。我正在学习Python和多进程编程,这个简单的例子一直让我困扰:
from multiprocessing import Pipe, Process
def f(r):
print(r.recv())
if __name__ == '__main__':
q, r = Pipe()
p = Process(target=f, args=(r,))
p.start()
q.send([42, None, 'hello'])
p.join()
主线程创建一个新的进程
Process
,p
,并将双向连接对象r
发送给函数f()
。当启动进程p
时,我希望r.recv()
会阻塞(据我所知,这意味着该进程将无限期等待,直到有东西通过管道传输),直到主进程通过q.send
发送一些对象。
然后p.join()
应使主进程等待,直到p
运行结束。
但是什么也没有发生。如果我在f()
中添加一个print
语句,那里也没有任何反应,就像f()
根本没有运行过,而p.start()
也是无效的。请问为什么这样做不起作用,如何修复?