精神残废 2023-03-09 12:56 采纳率: 70.8%
浏览 29
已结题

python进程间管道通信失败


'''
管道通信
只能用于有亲缘关系的进程
父进程中创建
'''

from  multiprocessing import Process,Pipe

#创建管道
fd1,fd2=Pipe(True)

def app1():
    print('启动app1,请登录')
    print('请求app2授权')
    fd1.send('app1请求登录')
    data=fd1.recv()
    if data:
        print('登陆成功:',data)

def app2():
    data=fd2.recv()
    print(data)
    fd2.send('123')
if __name__ == '__main__':
    p1=Process(target=app1)
    p2=Process(target=app2)
    p1.start()
    p2.start()
    p1.join()
    p2.join()

一直阻塞在这里,不知道原因
win10,python3.10

img

展开全部

  • 写回答

3条回答 默认 最新

  • CSDN专家-showbo 2023-03-09 15:22
    关注

    改下面这样,管道参数通过Process的args传入

     
    '''
    管道通信
    只能用于有亲缘关系的进程
    父进程中创建
    '''
     
    from  multiprocessing import Process,Pipe
     
    #创建管道
    fd1,fd2=Pipe(True)
     
    def app1(fd1):
        print('启动app1,请登录')
        print('请求app2授权')
        fd1.send('app1请求登录')
        data=fd1.recv()
        if data:
            print('登陆成功:',data)
     
    def app2(fd2):
        data=fd2.recv()
        print(data)
        fd2.send('123')
    if __name__ == '__main__':
        p1=Process(target=app1,args=(fd1,))
        p2=Process(target=app2,args=(fd2,))
        p1.start()
        p2.start()
        p1.join()
        p2.join()
     
    
    

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    CSDN专家-showbo 2023-03-09 15:22

    img

    回复
查看更多回答(2条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 3月17日
  • 已采纳回答 3月10日
  • 修改了问题 3月9日
  • 创建了问题 3月9日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部