zoukankan      html  css  js  c++  java
  • 管道通信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()
  • 相关阅读:
    vue-指令
    VueMusic-14搜索实现
    VueMusic-13歌手列表
    VueMusic-12歌词滚动
    VueMusic-11播放-歌词适配
    VueMusic-10.播放-歌词加载
    VueMusic-9.播放-播放功能
    VueMusic-8更多-下拉刷新
    VueMusic-7更多-数据适配
    VueMusic-6首页-热门榜单
  • 原文地址:https://www.cnblogs.com/zengsf/p/9637901.html
Copyright © 2011-2022 走看看