• 管道通信Pipe


    通信原理:
      在内存中开辟管道空间,生成管道操作对象,多个进程使用“同一个”管道对象进程操作即可实现通信

    函数方法:

    fd1,fd2 = Pipe(duplex = True)
      功能: 创建管道
      参数:默认表示双向管道
        如果设置为False则为单向管道
      返回值 : 两个管道对象,分别表示管道的两端
         如果是双向管道则均可读写
         如果是单向管道则fd1只读 fd2只写

    fd.recv()
      功能:从管道读取到的信息
      返回值:读取到的内容
        *如果管道为空则阻塞

    fd.send(data)
      功能:向管道写入内容
      参数:要写入的内容
        *可以发送python数据类型

    代码示例:
    from multiprocessing import Process,Pipe
    import os,time
    
    #创建管道对象
    fd1, fd2 = Pipe()
    
    def fun(name):
        time.sleep(3)
        #向管道写入内容
        fd1.send("hello "+str(name))
    
    def fun1():
        time.sleep(2)
        data = fd2.recv()
        print(data)
    
    jobs = []
    #这里创建了5个子进程进行发消息
    for i in range(5):
        p = Process(target = fun,args = (i,))
        jobs.append(p)
        p.start()
    #创建5个子进程收消息
    for i in range(5):
        #读取管道
        p1 = Process(target = fun1)
        p1.start()
    
    for i in jobs:
        i.join()
    
    p1.join()
  • 相关阅读:
    用js实现一个简单的mvvm
    ~~~持续更新,面向对象的编程,个人浅见
    前端直播功能开发总结
    echarts饼图去除鼠标移入高亮
    外包项目的感悟
    white-space:pre-wrap和word-break:break-all;
    转行两年,工作一年年,谈谈浅见
    html2canvas
    js点滴
    常用工具链接
  • 原文地址:https://www.cnblogs.com/zengsf/p/9637901.html
Copyright © 2020-2023  润新知