Python进程的通信Queue、Pipe实例分析


Posted in Python onMarch 30, 2020

本文实例讲述了Python进程的通信Queue、Pipe。分享给大家供大家参考,具体如下:


内容相关:

概念:进程的通信

Queue:创建与使用

Pipe:创建与使用


进程通信的概念

  • 进程的资源空间是相互独立的,一般而言是不能相互访问的。但很多情况下进程间需要互相通信,来完成系统的某项功能。进程通过与内核及其它进程之间的互相通信来协调它们的行为。
  • 通信方法:
    • 数据传输:一个进程将它的数据发送给另一个进程【如socket一般,把需要通信的数据传输给对方】
    • 管道:使用一片独立的区域【不在双方的资源空间中】,像一个有两个口的仓库一样,厂家负责在东门把产品放到仓库,司机负责在西门拉走产品
    • 资源共享:约定一片区域,双方都可以随意取放
    • 消息队列:这也是一个独立的区域,足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息

Queue:

  • 可以使用队列multiprocessing.Queue来进行进程通信

Queue 在multiprocessing 模块中:from multiprocessing import Queue

  • Queue的使用:
    • 1.创建对象:Queue对象=Queue()
    • 2.传入对象:要在主进程外使用Queue对象,需要作为参数传入Python进程的通信Queue、Pipe实例分析
    • 3.操作对象:【获取元素:Queue对象.get()】、【放入元素:Queue对象.put(元素)】
#Queue在multiprocessing中
from multiprocessing import Queue,Process

def f(q):#要在主进程外使用,需要作为参数传入
  q.put(['helloworld'])
  

def m(q):
  print("get in p2:",q.get())

if __name__=="__main__":
  q=Queue()
  p=Process(target=f,args=(q,))
  p.start()
  p2=Process(target=m,args=(q,))
  p2.start()

Pipe:

  • 可以使用管道Pipe来进行进程通信

Pipe 在multiprocessing 模块中:from multiprocessing import Pipe

  • Pipe的使用:
    • 1.创建对象:第一个Pipe对象,第二个Pipe对象=Pipe(),返回两个对象,第一个对象只能发,第二个对象只能收
    • 2.传入对象:在要发送的进程,传入第一个Pipe对象;在要接收的进程,传入第二个Pipe对象Python进程的通信Queue、Pipe实例分析
    • 3.操作对象:【获取元素:第一个对象.recv()】、【放入元素:第二个对象.send(元素)】
    • 4.操作完成后关闭管道:第一个对象.close(),第一个对象.close()
    from multiprocessing import Pipe,Process
    
    def f(conn):
      a=[1,2,3,4]
      conn.send(a)
      conn.close()
    def m(conn):
      a=conn.recv()
      conn.close()
    
    
    if __name__=="__main__":
      parent_conn,child_conn=Pipe()#返回两个值,第一个只能发,第二个只能收
      p1=Process(target=f,args=(child_conn,))
      p2 = Process(target=m, args=(parent_conn,))#
      p1.start()
      p2.start()
      p1.join()
      p2.join()

    希望本文所述对大家Python程序设计有所帮助。

    Python 相关文章推荐
    python实现系统状态监测和故障转移实例方法
    Nov 18 Python
    10种检测Python程序运行时间、CPU和内存占用的方法
    Apr 01 Python
    python魔法方法-属性访问控制详解
    Jul 25 Python
    python thrift搭建服务端和客户端测试程序
    Jan 17 Python
    Python3实现的字典、列表和json对象互转功能示例
    May 22 Python
    Python实现的读取电脑硬件信息功能示例
    May 30 Python
    Python下调用Linux的Shell命令的方法
    Jun 12 Python
    python实现简易动态时钟
    Nov 19 Python
    Python设计模式之外观模式实例详解
    Jan 17 Python
    Python函数定义及传参方式详解(4种)
    Mar 18 Python
    Python转换时间的图文方法
    Jul 01 Python
    Python使用贪婪算法解决问题
    Oct 22 Python
    基于Django OneToOneField和ForeignKey的区别详解
    Mar 30 #Python
    django 扩展user用户字段inlines方式
    Mar 30 #Python
    Python3标准库之threading进程中管理并发操作方法
    Mar 30 #Python
    解决django xadmin主题不显示和只显示bootstrap2的问题
    Mar 30 #Python
    Python2 与Python3的版本区别实例分析
    Mar 30 #Python
    django xadmin中form_layout添加字段显示方式
    Mar 30 #Python
    基于virtualenv创建python虚拟环境过程图解
    Mar 30 #Python
    You might like
    PHP循环语句笔记(foreach,list)
    2011/11/29 PHP
    Yii2 中实现单点登录的方法
    2018/03/09 PHP
    IE和Firefox的Javascript兼容性总结[推荐收藏]
    2011/10/19 Javascript
    Nodejs中自定义事件实例
    2014/06/20 NodeJs
    javascript中定义类的方法汇总
    2014/12/28 Javascript
    nodejs实现HTTPS发起POST请求
    2015/04/23 NodeJs
    javascript实现日期按月份加减
    2015/05/15 Javascript
    JavaScript访问字符串中单个字符的两种方法
    2015/07/03 Javascript
    JS实现适合于后台使用的动画折叠菜单效果
    2015/09/21 Javascript
    js生成随机数的过程解析
    2015/11/24 Javascript
    实例讲解JavaScript中instanceof运算符的用法
    2016/06/08 Javascript
    微信小程序 Page()函数详解
    2016/10/17 Javascript
    js实现加载更多功能实例
    2016/10/27 Javascript
    基于JavaScript表单脚本(详解)
    2017/10/18 Javascript
    jquery实现直播弹幕效果
    2019/11/28 jQuery
    [58:12]Ti4第二日主赛事败者组 LGD vs iG 3
    2014/07/21 DOTA
    [33:42]LGD vs OG 2018国际邀请赛小组赛BO2 第一场 8.16
    2018/08/17 DOTA
    Python中的高级数据结构详解
    2015/03/27 Python
    python连接数据库的方法
    2017/10/19 Python
    python3.6+opencv3.4实现鼠标交互查看图片像素
    2018/02/26 Python
    python Spyder界面无法打开的解决方法
    2018/04/27 Python
    Python 中 function(#) (X)格式 和 (#)在Python3.*中的注意事项
    2018/11/30 Python
    pandas 如何分割字符的实现方法
    2019/07/29 Python
    django 中使用DateTime常用的时间查询方式
    2019/12/03 Python
    申论倡议书范文
    2014/05/13 职场文书
    村庄环境整治方案
    2014/05/15 职场文书
    校优秀毕业生主要事迹
    2014/05/26 职场文书
    幼儿园标语大全
    2014/06/19 职场文书
    田径运动会通讯稿
    2014/09/13 职场文书
    学生检讨书怎么写
    2014/10/09 职场文书
    税务干部个人整改措施思想汇报
    2014/10/10 职场文书
    护士医德医风心得体会
    2016/01/25 职场文书
    python flask框架快速入门
    2021/05/14 Python
    教你怎么用Python selenium操作浏览器对象的基础API
    2021/06/23 Python
    Spring Cloud OpenFeign模版化客户端
    2022/06/25 Java/Android
    Vue Element plus使用方法梳理
    2022/12/24 Vue.js