python多进程间通信_Python 多进程编程之 进程间的通信(Queue)
Python 多进程编程之 进程间的通信(Queue)
1,进程间通信
Process有时是需要通信的,操作系统提供了很多机制来实现进程之间的通信,而Queue就是其中的一个方法
----这是操作系统开辟的一个空间,可以让各个子进程把信息放到Queue中,也可以把自己需要的信息取走
----这就相当于系统给python开辟了一个聊天室,让python创建的子进程可以在这个聊天室里畅所欲言
----一个进程可以放多条消息到Queue中
2,实例
#导入Queue,Process
from multiprocessing import Queue,Process
import os
#写入进程
def wp(q):
print("%s开始写入:"%os.getpid)
for i in "WANG":
#将信息写入队列
q.put(i)
print(i)
#读取进程
def rd(q):
print("%s开始读取"%os.getpid())
while True:
if not q.empty():
#从队列读取信息
print("read to %s"%q.get())
if __name__=="__main__":
#创建队列
q = Queue()
#创建写入进程
w = Process(target=wp,args=(q,))
#启动写入进程
w.start()
#创建读取进程
r = Process(target=rd,args=(q,))
#启动读取进程
r.start()
3,执行结果
1265开始读取
开始写入:
W
A
N
G
read to W
read to A
read to N
read to G
4,进程间通信常用函数
q.Queue()
--------------------------------------------------------
def __init__(self, maxsize=-1):
self._maxsize = maxsize
---- maxsize=-1,表示队列个数无穷大
---- 初始化Queue对象时,(例,q=Queue() )
或括号中没有指定最大可接收的消息数量,或数量为负值,
那么就表示可接收的消息数量没有上限
q.put("信息")
---------------------------------
将信息放入队列中
def put(self, obj, block=True, timeout=None):
pass
obj----传入的信息
block=True----阻塞=真 : 真阻塞(默认值)
timeout=None----等待时间,None(默认值)表示无限等待, 如果timeou设置值,则会等待N秒后,强制放入(put)
q.get()
----------------------------------
def get(self, block=True, timeout=None):
pass
从队列中拿出一个进程消息
block=True 默认值是真阻塞,
timeout=None 意思是 无限,无穷
两个合在一起的意思是 无限阻塞,无穷等待
队列的特点是:先进先出 所以get拿的顺序也是,先进先出 first in first out
q.put_nowait()
-------------------------------------
def put_nowait(self, obj):
pass
相当于q.put(obj,False)
不等待,直接放入
q.get_nowait()
----------------------------------------
def get_nowait(self):
pass
不做等待,就是要获取
如果队列中没有消息,就会报错
----解决报错,加入try 异常处理
q.qsize()
------------------------------------
def qsize(self):
return 0
返回当前队列包含的消息数量
q.full()
------------------------------
检测队列是否已经满了
True: 满
False: 未满
q.empty()
---------------------------------
def empty(self):
return False
检测队列是否为空
True:空
False:未空
python多进程间通信_Python 多进程编程之 进程间的通信(Queue)相关推荐
- 网络编程之 进程间的通信之管道的使用
如何使用管道是进程间通信的关键 博主先声明一下,关于处理进程创建以及销毁的方法. "子进程究竟何时终止????调用waitpid函数后还要无休止的等待子进程终止吗???&quo ...
- python多线程调度_python并发编程之进程、线程、协程的调度原理(六)
进程.线程和协程的调度和运行原理总结. 系列文章 进程.线程的调度策略介绍 linux中的进程主要有三种调度策略: 优先级调度:将进程分为普通进程和实时进程: 先进先出(队列)调度:实时进程先创建的先 ...
- python进程间通信时间开销_python 进程间的通信
python3,进程间的通信 本文来源于python 3.5版本的官方文档 multiprocessing模块为进程间通信提供了两种方法: 1.进程队列queue The Queue class is ...
- python多进程间通信_python多进程间通信代码实例
python多进程间通信代码实例 这篇文章主要介绍了python多进程间通信代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 这里使用pipe ...
- Linux系统编程(三)进程间的通信
Linux系统编程(三)进程间的通信 一.为什么需要进程之间的通信(IPC)? 二.管道 1.概念 2.特质 3.原理 4.局限性 5.代码 2.读入数据 三.共享存储映射 注意事项 父子进程通信 一 ...
- windows核心编程之进程间共享数据
有时候我们会遇到window进程间共享数据的需求,例如说我想知道系统当前有多少某个进程的实例. 我们能够在程序中定义一个全局变量.初始化为0.每当程序启动后就加1.当然我们我们能够借助第三方介质来储存 ...
- 【操作系统】进程间的通信——管道
进程间的通信-管道 管道 进程间的通信(IPC-Inter-Process Communication)有多种方式,管道是其中最基本的方式. 管道是半双工的,即是单向的. 管道是FIFO(先进先出)的 ...
- linux+Qt 下利用D-Bus进行进程间高效通信的三种方式
linux+Qt 下利用D-Bus进行进程间高效通信的三种方式 原文链接: https://www.cnblogs.com/wwang/archive/2010/10/27/1862552.html ...
- 进程间的通信——无名管道
进程间的通信--无名管道 宗旨:技术的学习是有限的,分享的精神是无限的. 一.进程间的通信 (1)同主机进程间数据交互机制:无名管道(PIPE),有名管道(FIFO).消息队列和共享内存.无名管道多用 ...
最新文章
- 使用memcache做web缓存
- AI最佳论文都在这里了!(非常全,快领!)
- 汇编语言笔记14-端口
- .net的label的背景如何设置成为透明_新一轮广告呈现方式变革,新橱窗广告,如何收割注意力经济?...
- MPLS ×××实验之OSPF sham-link
- 【机器学习】 - 关于Keras的深入理解
- 数据中台送到家 企业数字化转型“输血”变“造血”
- hiho 第1周 最长回文子串
- GitHub一份深度学习资源,包括论文、数据集、课程、图书、博客、教程、框架
- 21大软件架构特点的全面解析
- time.h中定义的函数
- 微信小程序开发教程第五章:微信小程序名片夹详情页开发
- 自动基线校正 python_红外光谱的
- 鼠标宏设置到鼠标左键,重置回去!
- C11 标准下的 C 语言编程
- AUTOSAR DCM Configuration
- 【算法竞赛学习笔记】佩尔方程-数学提升计划
- 科技业界10大最具争议成功决定:苹果iPhone
- C语言字符串笔试题含答案
- 基于大数据分析的葡萄酒品质鉴别系统设计与实现
热门文章
- 【Win】使用L2TP出现809错误
- Vim自动补全神器YouCompleteMe的配置
- NYOJ-571 整数划分(三)
- 博客搬家到 http://fresky.github.io/ - Visual Studio的插件Pdbproj可以把pdb转换成C++项目...
- Unicode – CSS中文字体转编码
- js实现审批流_小程序瀑布流组件:支持翻页与图片懒加载
- 大话数据结构第一章理解
- android数据截取字符串数组,android - 从Android Studio中的字符串数组获取特定字符串 - SO中文参考 - www.soinside.com...
- 数据库每日一题 2020.05.08
- 执行了rm-f,除了跑路,如何恢复?