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 del()函数用法
    Mar 24 Python
    理解python正则表达式
    Jan 15 Python
    从零开始学Python第八周:详解网络编程基础(socket)
    Dec 14 Python
    Python实现图片转字符画的示例
    Aug 22 Python
    Python3实现转换Image图片格式
    Jun 21 Python
    python实现傅里叶级数展开的实现
    Jul 21 Python
    python异常触发及自定义异常类解析
    Aug 06 Python
    Python使用正则实现计算字符串算式
    Dec 29 Python
    Python 解码Base64 得到码流格式文本实例
    Jan 09 Python
    浅谈python输出列表元素的所有排列形式
    Feb 26 Python
    在pytorch中动态调整优化器的学习率方式
    Jun 24 Python
    Pytorch自定义Dataset和DataLoader去除不存在和空数据的操作
    Mar 03 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
    探讨方法的重写(覆载)详解
    2013/06/08 PHP
    PHP中大括号'{}'用法实例总结
    2017/02/08 PHP
    PHP 进度条函数的简单实例
    2017/09/19 PHP
    浅析PHP数据导出知识点
    2018/02/17 PHP
    javascript KeyDown、KeyPress和KeyUp事件的区别与联系
    2009/12/03 Javascript
    jQuery 设置 CSS 属性示例介绍
    2014/01/16 Javascript
    自己用jQuery写了一个图片的马赛克消失效果
    2014/05/04 Javascript
    浅析javascript中function 的 length 属性
    2014/05/27 Javascript
    JS实现设置ff与ie元素绝对位置的方法
    2016/03/08 Javascript
    基于JS实现数字+字母+中文的混合排序方法
    2016/06/06 Javascript
    详谈JS中实现种子随机数及作用
    2016/07/19 Javascript
    关于数据与后端进行交流匹配(点亮星星)
    2016/08/03 Javascript
    AngularJS自定义服务与fliter的混合使用
    2016/11/24 Javascript
    canvas实现钟表效果
    2017/02/13 Javascript
    AngularJS实现页面定时刷新
    2017/03/14 Javascript
    vue.js的安装方法
    2017/05/12 Javascript
    深入理解JavaScript继承的多种方式和优缺点
    2017/05/12 Javascript
    简单实现js拖拽效果
    2017/07/25 Javascript
    checkbox:click事件触发span元素内容改变的方法
    2017/09/11 Javascript
    JS实现的文件拖拽上传功能示例
    2018/05/21 Javascript
    详解vue添加删除元素的方法
    2018/06/30 Javascript
    详解bootstrap-fileinput文件上传控件的亲身实践
    2019/03/21 Javascript
    vue实现表单录入小案例
    2019/09/27 Javascript
    JavaScript使用prototype属性实现继承操作示例
    2020/05/22 Javascript
    [46:40]VGJ.T vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.17
    2018/08/20 DOTA
    python获取图片颜色信息的方法
    2015/03/18 Python
    python中map()与zip()操作方法
    2016/02/27 Python
    Python装饰器实现几类验证功能做法实例
    2017/05/18 Python
    python smtplib模块自动收发邮件功能(一)
    2018/05/22 Python
    Python对wav文件的重采样实例
    2020/02/25 Python
    伦敦眼门票在线预订:London Eye
    2018/05/31 全球购物
    市级文明单位申报材料
    2014/05/07 职场文书
    市场推广策划方案
    2014/06/02 职场文书
    运动会广播稿100字
    2015/08/19 职场文书
    Pytest之测试命名规则的使用
    2021/04/16 Python
    python flask开发的简单基金查询工具
    2021/06/02 Python