Python进程间通信使用Pipe无法收到消息?

作者站长头像
站长
· 阅读数 10

最近在学习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()
回复
1个回答
avatar
test
2024-07-12

p = Process(target=fun, args=(i, fd1)) 把参数传上

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容