进程通信-Queue
进程通信-Queue
Queue消息队列是python进程通信的其中一种方式。需要引入multiprocessing包中的Queue函数(这是函数,不是类)。
有一个queue包,里面也有Queue,这个是和multiprocessing包有冲突的。
实际上multiprocessing包中的Queue就是用queue包的Queue来实现的。
Queue方法
put():往队列存放消息。可选参数,如果带参,例如:put(3),表示最多可存放3条消息。如果不带参数put(),则由可一直开辟内存空间存放消息。
get():从队列删除并拿出一条消息。一次只能拿一条,如果有多条,需要遍历循环取数。这是个阻塞函数,如果队列中没有消息,则会一直阻塞等待。
qsize():获取队列中消息的条数。
full():判断队列是否满了,若满了,则return True,否则为False
empty():判断队列是否为空(是否没有消息),若为空,则return True,否则为False
示例1,消息队列的数据存取
from multiprocessing import Queue q=Queue(3)#最多只能存放3条数据 i=0
while True:
if q.full():
break
q.put("hello%d" %i)
i+=1 if not q.empty():
for x in range(0, q.qsize()):
print(q.get()) print("main end")
示例2,多进程间消息队列处理
from multiprocessing import Process,Queue
import time def putInfo(q):
i=0
while True:
if q.full():
break
q.put("hello%d" %i)
i+=1 if __name__=="__main__":
q = Queue(3)
p1 = Process(target=putInfo, args=(q,))
p1.start()
p1.join() if not q.empty():
for x in range(0, q.qsize()):
print(q.get()) print("main end")
进程通信-Queue的更多相关文章
- python 守护进程、同步锁、信号量、事件、进程通信Queue
一.守护进程 1.主进程创建守护进程 其一:守护进程会在主进程代码执行结束后就终止 其二:守护进程内无法再开启子进程,否则抛出异常:AssertionError: daemonic processes ...
- 13.2、进程的通信:Queue、Pipe、
内容相关: 概念:进程的通信 Queue:创建与使用 Pipe:创建与使用 进程通信的概念 进程的资源空间是相互独立的,一般而言是不能相互访问的.但很多情况下进程间需要互相通信,来完成系统的某项功能. ...
- Python 多进程编程之 进程间的通信(Queue)
Python 多进程编程之 进程间的通信(Queue) 1,进程间通信Process有时是需要通信的,操作系统提供了很多机制来实现进程之间的通信,而Queue就是其中的一个方法----这是操作系统开辟 ...
- multiprocessing的进程通信Pipe和Queue
pipe管道,2个进程通信,允许单项或者双向,multiprocessing.Pipe(duplex=False)为单项,默认双向 示例: from multiprocessing import Pr ...
- python进程之间的通信——Queue
我们知道进程之间的数据是互不影响的,但有时我们需要在进程之间通信,那怎么办呢? 认识Queue 可以使用multiprocessing模块的Queue实现多进程之间的数据传递,Queue本身是一个消息 ...
- MINIX3 进程通信分析
MINIX3 进程通信分析 6.1MINIX3 进程通信概要 MINIX3 的进程通信是 MINIX3 内核部分最重要的一个部件,我个人认为其实这 是内核中的“内核”,怎么来理解这个概念呢?其实 MI ...
- Linux下进程通信的八种方法
Linux下进程通信的八种方法:管道(pipe),命名管道(FIFO),内存映射(mapped memeory),消息队列(message queue),共享内存(shared memory),信号量 ...
- 【朝花夕拾】Android性能篇之(七)Android跨进程通信篇
前言 只要是面试高级工程师岗位,Android跨进程通信就是最受面试官青睐的知识点之一.Android系统的运行由大量相互独立的进程相互协助来完成的,所以Android进程间通信问题,是做好Andro ...
- python记录_day31 进程同步和进程通信
一.进程同步 1.同步锁(又叫互斥锁) 加锁的代码以后,同一时间内只能被一个进程执行 from multiprocessing import Process, Lock def fun(loc): l ...
随机推荐
- 004bean作用域
1.Singleton(单例) 2.Prototype(原型)---->每次注入.通过Spring应用上下文获取,都会重新创建 @Scope(ConfigurableBeanFactory ...
- WebService发布与调用问题:expected: {http://schemas.xmlsoap.org/soap/envelope/}Envelope but found: {http://schemas.xmlsoap.org/wsdl/}definitions
Mailbox===AsYVzdwoY_b6uD s>>>>>>>javax.xml.ws.Service@103bf65 hs>>>> ...
- LeetCode 533----Lonely Pixel II
问题描述 Given a picture consisting of black and white pixels, and a positive integer N, find the number ...
- Leetcode算法比赛---- Lexicographical Numbers
问题描述 Given an integer n, return 1 - n in lexicographical order. For example, given 13, return: [1,10 ...
- 自动生成了一本ES6的书
(Spring+SpringMVC+MyBatis)
SSM 框架-06-详细整合教程(IDEA版)(Spring+SpringMVC+MyBatis) SSM(Spring.Spring MVC和Mybatis)如果你使用的是 Eclipse,请查看: ...
- Week2——XML
一.什么是XML? XML是可扩展标记性语言,类似于HTML,被设计为传输和存储数据,其焦点是数据的内容.XML的标签没有被预定义,用户就需要自行定义标签,也可随意定义标签.XML 允许创作者定义自己 ...
- MyBatis基本配置和实践(三)
一.输入映射和输出映射 mapper.xml映射文件中定义了操作数据库的sql,每条sql就是一个statement,映射文件是MyBatis的核心. 1.parameterType(输入类型) 简单 ...
- 如何对iPhone进行屏幕录像
如何对iPhone进行屏幕录像 录制时候的效果: 1. 打开QuickTime Player 2. 在文件中新建影片录制 3. 然后酱紫录制