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

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

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

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

如下代码所示:

import osimport timefrom multiprocessing import pipe, processfd1, 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 函数的第二个参数传递:

立即学习“Python免费学习笔记(深入)”;

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 却收不到消息?父进程接收不到子进程发送的数据,问题出在哪里?的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2182634.html

(0)
上一篇 2025年2月25日 15:23:55
下一篇 2025年2月25日 15:24:11

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Python怎么通过paramiko库实现远程执行linux命令

    (1)首先安装paramiko库 pip install paramiko 登录后复制 (2)封装了以下类,可以直接拿来使用 import paramikoclass SSHClient(object):    def __init__(s…

    编程技术 2025年3月30日
    100
  • python正则表达教程2024

    正则表达式是一种在文本中匹配模式的代码,使用元字符和量词定义匹配模式。Python 中使用 re 模块处理正则表达式:1. 导入 re 模块;2. 定义正则表达式模式;3. 调用 re.search() 查找匹配项。正则表达式语法包括元字符…

    2025年3月30日
    100
  • 字符数组怎么转换成int数组 java

    将字符数组转换为 int 数组的方法:提取数字字符创建 int 数组逐个解析数字填充 int 数组 如何将字符数组转换为 int 数组 将字符数组转换为 int 数组可以通过以下步骤完成: 1. 提取数字字符 首先,使用正则表达式或其他字符…

    2025年3月30日
    100
  • java数组怎么导入文本数据

    要在 Java 中将文本数据导入数组,需要以下步骤:读取文本文件并存储在字符串中。使用正则表达式或 split() 方法将字符串拆分为单个记录。创建与记录数相同长度的数组来存储数据。遍历记录,进一步拆分每条记录,并从每个拆分部分中提取数据。…

    2025年3月30日
    100
  • 如何使用 Java 爬取嵌入页面中的图片验证码?

    获取嵌套页面图片验证码的 java 方法 本文将讨论如何使用 java 爬取包含在页面中的图片验证码。 问题: 我们无法直接访问嵌入页面的图片验证码,其返回的是一个 jfig 页面。 立即学习“Java免费学习笔记(深入)”; 解决方案: …

    2025年3月30日
    100
  • java怎么从键盘输入byte数组

    Java 中可通过如下方法从键盘输入字节数组:使用 Scanner 类:创建一个 Scanner 对象,使用 nextLine() 读取键盘输入的一行,再将字符串转换为字节数组。使用 DataInputStream:读取二进制数据,包括字节…

    2025年3月30日
    100
  • 字符串:Java 面试精要中的基本方法

    字符串是几乎每个 java 应用程序的基本组成部分。无论您是构建复杂的算法、处理用户输入还是执行文本操作,都必须了解如何有效地使用 java 的 string 类方法。 在这篇文章中,我们将深入探讨每个 java 开发人员都应该知道的一些基…

    2025年3月30日
    100
  • java 混乱的数组怎么区分

    通过顺序检查、遍历检查、查找特定元素和使用流式处理或正则表达式等方法,可以区分 Java 中混乱的数组。 如何区分 Java 中混乱的数组 在 Java 中,数组是一个包含固定数量元素的连续集合。当数组中元素的顺序混乱或无法按预期顺序访问时…

    2025年3月30日
    100
  • java中字符串怎么转数组

    在 Java 中,将字符串转换为数组的方法有:使用 split() 方法根据模式分隔字符串;使用 toCharArray() 方法获取单个字符的字符数组;使用 replaceAll() 和 StringJoiner 替换空格并连接非空格字符…

    2025年3月30日
    100
  • java怎么由字符串构造数组

    在 Java 中,可以通过以下六种方法将字符串构造为数组:使用 String.split() 方法拆分字符串使用正则表达式拆分字符串使用字符数组和 Arrays.copyOfRange() 方法使用流将字符串拆分为字符流使用 Apache …

    2025年3月30日
    100

发表回复

登录后才能评论