gpt4 book ai didi

Python 多处理管道不会正确接收 ()

转载 作者:行者123 更新时间:2023-12-04 05:47:52 25 4
gpt4 key购买 nike

这是针对 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()

主线程新建一个Processp,并将双向连接对象r发送给函数f( )。当进程 p 启动时,我希望 r.recv() 阻塞(据我所知,这意味着这个进程将无限期地等待,直到有东西通过pipe) 直到主进程通过 q.send 发送一些对象。

然后 p.join() 应该让主进程等待,直到 p 运行完毕。

但是什么也没有发生。如果我向 f() 添加一个 print 语句,那里也没有任何反应,就好像 f() 甚至从未运行过并且 p.start() 无效。

您能解释一下为什么这行不通吗?什么可以解决?

最佳答案

我知道这已经有一段时间了,但对于其他有这个问题的人来说,你的管道末端颠倒了。您正在尝试使用接收端发送,并尝试使用发送端接收。我发现将 duplex=True 添加到 Pipe 构造函数可以更轻松地处理不同的端点。

来源:https://docs.python.org/2/library/multiprocessing.html#pipes-and-queues

关于Python 多处理管道不会正确接收 (),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10442870/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com