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字符编码
    Aug 03 Python
    Django REST为文件属性输出完整URL的方法
    Dec 18 Python
    python打包压缩、读取指定目录下的指定类型文件
    Apr 12 Python
    pandas.DataFrame选取/排除特定行的方法
    Jul 03 Python
    python logging重复记录日志问题的解决方法
    Jul 12 Python
    Python3随机漫步生成数据并绘制
    Aug 27 Python
    python多线程并发及测试框架案例
    Oct 15 Python
    python3 tkinter实现添加图片和文本
    Nov 26 Python
    matlab中imadjust函数的作用及应用举例
    Feb 27 Python
    Selenium自动化测试工具使用方法汇总
    Jun 12 Python
    pycharm导入源码的具体步骤
    Aug 04 Python
    pycharm远程连接服务器并配置python interpreter的方法
    Dec 23 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
    咖啡与牛奶
    2021/03/03 冲泡冲煮
    php中static静态变量的使用方法详解
    2010/06/04 PHP
    php curl模拟post提交数据示例
    2013/12/31 PHP
    php中Session的生成机制、回收机制和存储机制探究
    2014/08/19 PHP
    typecho插件编写教程(六):调用接口
    2015/05/28 PHP
    JQuery 插件模板 制作jquery插件的朋友可以参考下
    2010/03/17 Javascript
    运算符&&的三个不同层次
    2013/04/07 Javascript
    JS 实现Json查询的方法实例
    2013/04/12 Javascript
    Javascript实现页面跳转的几种方式分享
    2013/10/26 Javascript
    jquery获得option的值和对option进行操作
    2013/12/13 Javascript
    checkbox勾选判断代码分析
    2014/06/11 Javascript
    JavaScript中有关一个数组中最大值和最小值及它们的下表的输出的解决办法
    2016/07/01 Javascript
    谈谈JavaScript的New关键字
    2016/08/26 Javascript
    解决vue-cli中stylus无法使用的问题方法
    2017/06/19 Javascript
    vue实现登录后页面跳转到之前页面
    2018/01/07 Javascript
    JavaScript实现正则去除a标签并保留内容的方法【测试可用】
    2018/07/18 Javascript
    NodeJS 实现多语言的示例代码
    2018/09/11 NodeJs
    30分钟快速实现小程序语音识别功能
    2018/11/27 Javascript
    vue-cli2与vue-cli3在一台电脑共存的实现方法
    2019/09/25 Javascript
    在Gnumeric下使用Python脚本操作表格的教程
    2015/04/14 Python
    解读! Python在人工智能中的作用
    2017/11/14 Python
    Python使用Scrapy保存控制台信息到文本解析
    2017/12/27 Python
    python+tkinter编写电脑桌面放大镜程序实例代码
    2018/01/16 Python
    Python批量合并有合并单元格的Excel文件详解
    2018/04/05 Python
    详细介绍pandas的DataFrame的append方法使用
    2019/07/31 Python
    Python进程Multiprocessing模块原理解析
    2020/02/28 Python
    Python本地及虚拟解释器配置过程解析
    2020/10/13 Python
    语文教育专业推荐信范文
    2013/11/25 职场文书
    美德少年事迹材料500字
    2014/08/19 职场文书
    韩语专业职业生涯规划范文:成功之路就在我们脚下
    2014/09/11 职场文书
    五一劳动节演讲稿
    2014/09/12 职场文书
    环卫处个人工作总结
    2015/03/04 职场文书
    2015年街道除四害工作总结
    2015/05/15 职场文书
    工程进度款催款函
    2015/06/24 职场文书
    2016年度创先争优活动总结
    2016/04/05 职场文书
    二维码条形码生成的JavaScript脚本库
    2022/07/07 Javascript