Python进程的通信Queue、Pipe实例分析
作者:随风行云 发布时间:2021-11-22 13:50:44
本文实例讲述了Python进程的通信Queue、Pipe。分享给大家供大家参考,具体如下:
内容相关:
概念:进程的通信
Queue:创建与使用
Pipe:创建与使用
进程通信的概念
进程的资源空间是相互独立的,一般而言是不能相互访问的。但很多情况下进程间需要互相通信,来完成系统的某项功能。进程通过与内核及其它进程之间的互相通信来协调它们的行为。
通信方法:
数据传输:一个进程将它的数据发送给另一个进程【如socket一般,把需要通信的数据传输给对方】
管道:使用一片独立的区域【不在双方的资源空间中】,像一个有两个口的仓库一样,厂家负责在东门把产品放到仓库,司机负责在西门拉走产品
资源共享:约定一片区域,双方都可以随意取放
消息队列:这也是一个独立的区域,足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息
Queue:
可以使用队列multiprocessing.Queue来进行进程通信
Queue 在multiprocessing 模块中:from multiprocessing import Queue
Queue的使用:
1.创建对象:Queue对象=Queue()
2.传入对象:要在主进程外使用Queue对象,需要作为参数传入
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对象
3.操作对象:【获取元素:第一个对象.recv()】、【放入元素:第二个对象.send(元素)】
4.操作完成后关闭管道:第一个对象.close(),第一个对象.close()
from multiprocessing import Pipe,Processdef 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程序设计有所帮助。
来源:https://www.cnblogs.com/progor/p/8439320.html
猜你喜欢
- 尽管甲骨文收购Sun交易尚在等待最终结果,业界对开源数据库MySQL的未来命运也十分担忧,但Sun的开发者依然在继续努力研发该开源数据库。他
- buffer:下载数据缓冲区,以字节为单位,缺省依赖操作系统 consistent:下载期间所涉及的数据保持read only,缺省为n d
- 整个安装流程如下: 1,首先安装apache:我安装的版本是: httpd-2.2.16-win32-x86-openssl-0.9.8o.
- 问题描述前端 vue 框架,后台 php,百度跨域问题后台加这段代码header("Access-Control-Allow-Or
- 字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,
- 请问如何实现复合查询?我们用下面的代码来实现动态生成查询条件,动态显示结果的复合查询。set database to databasenam
- XML的未来 现在你已经知道XML。确实,结构有点复杂,而且DTD有各种可以定义文档可以包含的内容的选项。但还不只这些。考虑一个数据交换对其
- 以下是一个类文件,下面的注解是调用类的方法注意:如果系统不支持建立Scripting.FileSystemObject对象,那么数据库压缩功
- ASP中RegExp是什么 '名字字符检验Public Function CheckName(Str) &nbs
- php去掉数组的第一个值的两种删除方法:1、使用array_shift()函数删除数组的第一个值,语法“array_sh
- 前言因为NLP作业需要用到kenlm,而kenlm在linux下更为方便。本人win10之前开启了子系统,所以就打算在子系统下进行相关作业的
- 本文实例讲述了Python中list以及list与array的相互转换实现方法。分享给大家供大家参考,具体如下:python中的list是一
- 初步确定是病毒破坏了文件的读写权限,现放出修复工具请中招朋友的测试!!使用方法:压缩包中文件全部解压或者直接运行压缩包中的iisfixer.
- 功能描述:打开一个网站的网页,过5分钟不动作,就会锁定页面,隐藏内容容器,显示一个容器用于输入密码,输入正确的密码来解锁。锁定后即使用户刷新
- 佛爷去了公司的年夜饭,我有点无聊就在公司 Coding 点东西玩玩,于是就有了这玩意。请允许我很猥·琐得将这个游戏称之为“是男人坚持 100
- 一、多行函数又称组合函数(Group Functions)、聚合函数 1、 Types of Group Functions avg、cou
- Python时间处理Python在处理与时间相关的操作时有两个重要模块:time和datetime。在本文中,我们介绍这两个模块并为每个场景
- 错误的代码①d = {'a':1, 'b':0, 'c':1, 'd':0}
- 分享一个 * 真网页拾色器(调色板),颜色丰富216色,使用方便。运行截图:<html id="container"
- 创建一个表T_Employee并插入若干数据 代码如下:create table T_Employee(FNumber VARC