进程通信-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的更多相关文章

  1. python 守护进程、同步锁、信号量、事件、进程通信Queue

    一.守护进程 1.主进程创建守护进程 其一:守护进程会在主进程代码执行结束后就终止 其二:守护进程内无法再开启子进程,否则抛出异常:AssertionError: daemonic processes ...

  2. 13.2、进程的通信:Queue、Pipe、

    内容相关: 概念:进程的通信 Queue:创建与使用 Pipe:创建与使用 进程通信的概念 进程的资源空间是相互独立的,一般而言是不能相互访问的.但很多情况下进程间需要互相通信,来完成系统的某项功能. ...

  3. Python 多进程编程之 进程间的通信(Queue)

    Python 多进程编程之 进程间的通信(Queue) 1,进程间通信Process有时是需要通信的,操作系统提供了很多机制来实现进程之间的通信,而Queue就是其中的一个方法----这是操作系统开辟 ...

  4. multiprocessing的进程通信Pipe和Queue

    pipe管道,2个进程通信,允许单项或者双向,multiprocessing.Pipe(duplex=False)为单项,默认双向 示例: from multiprocessing import Pr ...

  5. python进程之间的通信——Queue

    我们知道进程之间的数据是互不影响的,但有时我们需要在进程之间通信,那怎么办呢? 认识Queue 可以使用multiprocessing模块的Queue实现多进程之间的数据传递,Queue本身是一个消息 ...

  6. MINIX3 进程通信分析

    MINIX3 进程通信分析 6.1MINIX3 进程通信概要 MINIX3 的进程通信是 MINIX3 内核部分最重要的一个部件,我个人认为其实这 是内核中的“内核”,怎么来理解这个概念呢?其实 MI ...

  7. Linux下进程通信的八种方法

    Linux下进程通信的八种方法:管道(pipe),命名管道(FIFO),内存映射(mapped memeory),消息队列(message queue),共享内存(shared memory),信号量 ...

  8. 【朝花夕拾】Android性能篇之(七)Android跨进程通信篇

    前言 只要是面试高级工程师岗位,Android跨进程通信就是最受面试官青睐的知识点之一.Android系统的运行由大量相互独立的进程相互协助来完成的,所以Android进程间通信问题,是做好Andro ...

  9. python记录_day31 进程同步和进程通信

    一.进程同步 1.同步锁(又叫互斥锁) 加锁的代码以后,同一时间内只能被一个进程执行 from multiprocessing import Process, Lock def fun(loc): l ...

随机推荐

  1. Node.js 学习笔记(一)--------- Node.js的认识和Linux部署

    Node.js 一.Node.js 简介  简单的说 Node.js 就是运行在服务端的可以解析并运行 JavaScript 脚本的软件. Node.js 是一个基于Chrome JavaScript ...

  2. RGB与INT类型的转换

    开发时遇到的问题,设置图层样式时颜色的返回值是uint,一时不知改怎么转换为C#常用的RGB值了. 一番百度,结果如下: RGB = R + G * 256 + B * 256 * 256 因此可得到 ...

  3. .NET开源论坛MvcForum推荐

    MvcForum算是Asp.net中开源论坛佼佼者之一.主要使用ASP.NET MVC 5 &Unity & Entity Framework 6,有较强的可撸性.是论坛开发者的不二之 ...

  4. Java快速入门-05-数组循环条件 实例《延禧攻略》

    <延禧攻略>如此火爆,蹭蹭热度,用 JAVA 最基础的数组,循环,条件,输入/输出,做了一个简单的小游戏,帮助初学者巩固 JAVA 基础,注释非常详细 动态图展示: xuanfei.jav ...

  5. linux下close 掉socket 之后 阻塞的recv 不会立即返回

    转载自:http://www.cnblogs.com/wainiwann/p/3942203.html 在开发的一个基于rtmp聊天的程序时发现了一个很奇怪的现象. 在windows下当我们执行 cl ...

  6. 七、angularjs 倒计时

    使用定时器时离开页面需要清除定时器,清除的方法有两种分别针对页面有缓存和没有缓存 1.页面有缓存 2.页面没有缓存 angularjs倒计时首先需要注入:$interval 60s倒计时 vm.sec ...

  7. 最好的原型和流程图绘制工具:OmniGraffle_交互设计

    原文地址:http://www.shangxueba.com/jingyan/2230668.html 使用哪种原型设计工具"大概是设计师闲聊时出现频率最高的话题之一.据我了解一般以Visi ...

  8. VUE知识day2

    VUE用途 VUE:是用来做单页面的 掘金网单击时会创建对象与销毁,减少与服务器的交互 1模块使用------------------- 1导出------------ export default ...

  9. maven(14)-nexus仓库基本用法

    登录 启动nexus3,访问http://localhost:8081/  点击右上角sign in登录,默认用户名:admin  密码:admin123,登陆后可以点击右上角的admin,修改默认密 ...

  10. C#使用yield关键字构建迭代器

    http://www.cnblogs.com/Huaran1chendu/p/4838536.html 以前,如果我们希望构建支持foreach枚举的自定义集合,只能实现IEnumerable接口(可 ...