精神残废 2023-03-09 20:56 采纳率: 69.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 23: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()
     
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月18日
  • 已采纳回答 3月10日
  • 修改了问题 3月9日
  • 创建了问题 3月9日

悬赏问题

  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 wpf界面一直接收PLC给过来的信号,导致UI界面操作起来会卡顿
  • ¥15 init i2c:2 freq:100000[MAIXPY]: find ov2640[MAIXPY]: find ov sensor是main文件哪里有问题吗
  • ¥15 运动想象脑电信号数据集.vhdr
  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了