您的位置 首页 编程知识

Python 进程间通信使用 Pipe 却收不到消息?父进程接收不到子进程发送的数据,问题出在哪里?

进程间通信使用 pipe 却收不到消息? 在学习 python 的进程间通信时,使用 pipe 来传递数据遇到…

Python 进程间通信使用 Pipe 却收不到消息?父进程接收不到子进程发送的数据,问题出在哪里?

进程间通信使用 pipe 却收不到消息?

在学习 python 的进程间通信时,使用 pipe 来传递数据遇到问题:父进程无法收到子进程发送的消息。这可能是因为参数传递错误造成的。

如下代码所示:

import os import time from multiprocessing import pipe, process  fd1, fd2 = pipe()   def fun(name):     time.sleep(3)     # 向管道写入内容     fd1.send({name: os.getpid()})   if __name__ == "__main__":      jobs = []     for i in range(5):         p = process(target=fun, args=(i,))         jobs.append(p)         p.start()     for i in range(5):         # 读管道         data = fd2.recv()         print(data)     for i in jobs:         i.join()
登录后复制

在这个示例中,子进程 fun 函数尝试将一个字典发送到父进程,但没有传递管道描述符 fd1。解决这个问题的正确方法是将管道描述符作为 fun 函数的第二个参数传递:

立即学习“”;

def fun(name, fd):     time.sleep(3)     # 向管道写入内容     fd.send({name: os.getpid()})
登录后复制
if __name__ == "__main__":      jobs = []     for i in range(5):         p = Process(target=fun, args=(i, fd1))         jobs.append(p)         p.start()
登录后复制

这样修改后,父进程就能正确地从子进程接收数据了。

以上就是Python 进程间通信使用 Pipe 却收不到消息?父进程接收不到子进程发送的数据,问题出在哪里?的详细内容,更多请关注php中文网其它相关文章!

本文来自网络,不代表四平甲倪网络网站制作专家立场,转载请注明出处:http://www.elephantgpt.cn/3554.html

作者: nijia

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

联系我们

18844404989

在线咨询: QQ交谈

邮箱: 641522856@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部