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实现爬虫下载漫画示例
    Feb 16 Python
    python判断windows隐藏文件的方法
    Mar 21 Python
    Python重新引入被覆盖的自带function
    Jul 16 Python
    在Heroku云平台上部署Python的Django框架的教程
    Apr 20 Python
    在Python中操作列表之List.append()方法的使用
    May 20 Python
    使用Python神器对付12306变态验证码
    Jan 05 Python
    Python调用微信公众平台接口操作示例
    Jul 08 Python
    Python工程师面试必备25条知识点
    Jan 17 Python
    python在非root权限下的安装方法
    Jan 23 Python
    Python networkx包的实现
    Feb 14 Python
    深入了解Python装饰器的高级用法
    Aug 13 Python
    Python hashlib和hmac模块使用方法解析
    Dec 08 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
    使用ThinkPHP自带的Http类下载远程图片到本地的实现代码
    2011/08/02 PHP
    php中$_REQUEST、$_POST、$_GET的区别和联系小结
    2011/11/23 PHP
    php 中的信号处理操作实例详解
    2020/03/04 PHP
    Document对象内容集合(比较全)
    2010/09/06 Javascript
    js中top、clientTop、scrollTop、offsetTop的区别 文字详细说明版
    2011/01/08 Javascript
    JS焦点图切换,上下翻转
    2011/05/12 Javascript
    FusionCharts图表显示双Y轴双(多)曲线
    2012/11/22 Javascript
    js判断运行jsp页面的浏览器类型以及版本示例
    2013/10/30 Javascript
    jquery text(),val(),html()方法区别总结
    2013/11/04 Javascript
    JavaScript实现模仿桌面窗口的方法
    2015/07/18 Javascript
    JavaScript实现时间倒计时跳转(推荐)
    2016/06/28 Javascript
    JS代码实现电脑配置检测功能
    2018/03/21 Javascript
    Canvas实现微信红包照片效果
    2018/08/21 Javascript
    微信小程序实现左侧滑栏过程解析
    2019/08/26 Javascript
    JS document form表单元素操作完整示例
    2020/01/13 Javascript
    python处理圆角图片、圆形图片的例子
    2014/04/25 Python
    python实现堆栈与队列的方法
    2015/01/15 Python
    python常规方法实现数组的全排列
    2015/03/17 Python
    详谈python3 numpy-loadtxt的编码问题
    2018/04/29 Python
    django项目搭建与Session使用详解
    2018/10/10 Python
    Python 加密与解密小结
    2018/12/06 Python
    Python实现获取当前目录下文件名代码详解
    2020/03/10 Python
    Django之腾讯云短信的实现
    2020/06/12 Python
    编写python代码实现简单抽奖器
    2020/10/20 Python
    美国彩妆品牌:Coastal Scents
    2017/04/01 全球购物
    阿拉伯时尚购物网站:Nisnass
    2021/02/07 全球购物
    北京振戎融通Java面试题
    2015/09/03 面试题
    美术专业个人自我评价
    2014/01/18 职场文书
    施工安全责任书范本
    2014/07/24 职场文书
    故宫导游词
    2015/01/31 职场文书
    个人承诺书格式范文
    2015/04/29 职场文书
    2016年猴年新春致辞
    2015/08/01 职场文书
    期中考试后的感想
    2015/08/07 职场文书
    《将心比心》教学反思
    2016/02/23 职场文书
    iPhone13再次曝光
    2021/04/15 数码科技
    Elasticsearch 基本查询和组合查询
    2022/04/19 Python