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 相关文章推荐
    简单的Apache+FastCGI+Django配置指南
    Jul 22 Python
    详解Python使用simplejson模块解析JSON的方法
    Mar 24 Python
    Python 遍历列表里面序号和值的方法(三种)
    Feb 17 Python
    Python自动化运维之Ansible定义主机与组规则操作详解
    Jun 13 Python
    Linux下远程连接Jupyter+pyspark部署教程
    Jun 21 Python
    Python Pandas实现数据分组求平均值并填充nan的示例
    Jul 04 Python
    Django中URL的参数传递的实现
    Aug 04 Python
    Python学习笔记之集合的概念和简单使用示例
    Aug 22 Python
    Python中 CSV格式清洗与转换的实例代码
    Aug 29 Python
    Tensorflow 模型转换 .pb convert to .lite实例
    Feb 12 Python
    python实现移动木板小游戏
    Oct 09 Python
    Pandas中DataFrame交换列顺序的方法实现
    Dec 14 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读MYSQL中文乱码的解决方法
    2006/12/17 PHP
    PHP中使用Imagick操作PSD文件实例
    2015/01/26 PHP
    PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
    2016/09/11 PHP
    浅谈thinkphp5 instance 的简单实现
    2017/07/30 PHP
    php中通用的excel导出方法实例
    2017/12/30 PHP
    javascript之水平横向滚动歌词同步的应用
    2007/05/07 Javascript
    JQuery 表单中textarea字数限制实现代码
    2009/12/07 Javascript
    JS动态增加删除UL节点LI及相关内容示例
    2014/05/21 Javascript
    Nodejs全栈框架StrongLoop推荐
    2014/11/09 NodeJs
    了不起的node.js读书笔记之node的学习总结
    2014/12/22 Javascript
    JavaScript更改原始对象valueOf的方法
    2015/03/19 Javascript
    简单介绍jsonp 使用小结
    2016/01/27 Javascript
    node.js实现快速截图
    2016/08/27 Javascript
    javascript简单进制转换实现方法
    2016/11/24 Javascript
    vue.js+Echarts开发图表放大缩小功能实例
    2017/06/09 Javascript
    ReactNative列表ListView的用法
    2017/08/02 Javascript
    VueJs使用Amaze ui调整列表和内容页面
    2017/11/30 Javascript
    详解keep-alive + vuex 让缓存的页面灵活起来
    2019/04/19 Javascript
    vue中通过使用$attrs实现组件之间的数据传递功能
    2019/09/01 Javascript
    基于JavaScript实现留言板功能
    2020/03/16 Javascript
    es6数组includes()用法实例分析
    2020/04/18 Javascript
    Django发送html邮件的方法
    2015/05/26 Python
    Python使用pyh生成HTML文档的方法示例
    2018/03/10 Python
    Python 远程开关机的方法
    2020/11/18 Python
    BookOutlet加拿大:在网上书店购买廉价折扣图书和小说
    2018/10/05 全球购物
    个性化皮包、小袋、生活配件:Mon Purse
    2019/03/26 全球购物
    百度软件工程师职位
    2013/02/14 面试题
    基于Python 函数和方法的区别说明
    2021/03/24 Python
    关于爱国的演讲稿
    2014/05/07 职场文书
    小学生我的梦想演讲稿
    2014/08/21 职场文书
    2014最新自愿离婚协议书范本
    2014/11/19 职场文书
    小升初自荐信怎么写
    2015/03/26 职场文书
    财务经理岗位职责范本
    2015/04/08 职场文书
    小公司融资,商业计划书的8切记
    2019/07/15 职场文书
    创业计划书之游泳馆
    2019/09/16 职场文书
    原生JavaScript实现简单五子棋游戏
    2021/06/28 Javascript