python中进程的通信:消息队列。

    我们知道进程是互相独立的,各自运行在自己独立的内存空间。
所以进程之间不共享任何变量。
我们要想进程之间互相通信,传送一些东西怎么办?
需要用到消息队列!!
进程之间通过Queue进行通信
这是一个消息队列,
q = Queue(n) 开一个能接收n条信息的队列,不传入默认动态延长 q.qsize() 返回队列中消息的条数
q.empty() 队列是否为空
q.get( block,timeout ) 取出消息,block默认为True,表示如果为空 一直等取出为止
timeout设置等多久,如果到时间还是空就抛出异常
q.get_nowait() 相当于q.get(False) 如果空 立刻抛出异常 q.put(item,block,timeout) item为向队列传送的内容
block默认为True 如果队列满了 就一直等有空位再送进去
timeout设置时间 到时间了没送进去就抛出异常
q.put_nowait(item) 相当于q.put(False) 如果满了 立即抛出异常
 from multiprocessing import Queue
if __name__ == "__main__":
q = Queue(3)
q.put("消息1")
q.put("消息2")
print(q.full())
q.put("消息3")
print(q.full()) # 从消息队列取数据 推荐两种方法 1 捕获异常 2 判断 try :
q.put("消息4",True , 2) # 尝试写入,如果满了 2秒后抛出异常
except:
print("已经满了,现有消息%s条"%q.qsize())
try :
q.put_nowait("消息4") # 尝试写入 如果满了立即抛出异常
#相当于q.put(item,False)
except:
print("已经满了,现有消息%s条"%q.qsize()) if not q.full():
q.put_nowait("消息4") if not q.empty():
for i in range(q.qsize()):
print(q.get_nowait())
在进程池当中使用Queue 需要使用Manager().Queue()
 from multiprocessing  import Manager,Pool
import os
def reader(q):
print("我是子进程%s,我的父进程是%s,我开始读取消息"%( os.getpid(),os.getppid() ) )
for i in range(q.qsize()):
print(q.get()) def writer(q):
print("我是子进程%s,我的父进程是%s,我开始写消息"%( os.getpid(),os.getppid() ))
for i in "DongGe":
q.put(i) if __name__ == "__main__":
p = Pool()
q = Manager().Queue()
p.apply(writer,(q,))
p.apply(reader,(q,))
#关闭进程池 不再接收任务
p.close()
#阻塞 等待进程结束,必须在close之后
p.join() print("结束")
												

python多进程之间的通信:消息队列Queue的更多相关文章

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

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

  2. 2.Python进程间的通信之队列(Queue)和生产者消费者模型

    一.队列 1.1 概念介绍-----multiprocess.Queue 创建共享的进程队列,Queue是多进程安全的队列,可以使用Queue实现多进程之间的数据传递. Queue([maxsize] ...

  3. Python进阶【第二篇】多线程、消息队列queue

    1.Python多线程.多进程 目的提高并发 1.一个应用程序,可以有多进程和多线程 2.默认:单进程,单线程 3.单进程,多线程 IO操作,不占用CPU python的多线程:IO操作,多线程提供并 ...

  4. [PHP] 多进程通信-消息队列使用

    向消息队列发送数据和获取数据的测试 <?php $key=ftok(__FILE__,'a'); //获取消息队列 $queue=msg_get_queue($key,0666); //发送消息 ...

  5. python消息队列Queue

    实例1:消息队列Queue,不要将文件命名为"queue.py",否则会报异常"ImportError: cannot import name 'Queue'" ...

  6. 消息队列Queue大全

    消息队列Queue大全 (http://queues.io/) 作业队列,消息队列和其他队列.几乎所有你能想到的都在这. 关于 那里有很多排队系统.他们每个人都不同,是为解决某些问题而创建的.这个页面 ...

  7. 消息队列queue

    一.queue 在多线程编程中,程序的解耦往往是一个麻烦的问题,以及在socket网络编程中也会有这样的问题.recv 和send之间,如果服务端有消息,问题需要发送给客户端,而那边的recv 被主程 ...

  8. python笔记9 线程进程 threading多线程模块 GIL锁 multiprocessing多进程模块 同步锁Lock 队列queue IO模型

    线程与进程 进程 进程就是一个程序在一个数据集上的一次动态执行过程.进程一般由程序.数据集.进程控制块三部分组成.我们编写的程序用来描述进程要完成哪些功能以及如何完成:数据集则是程序在执行过程中所需要 ...

  9. Python多进程编程-进程间协作(Queue、Lock、Semaphore、Event、Pipe)

    进程与进程之间是相互独立的,互不干扰.如果多进程之间需要对同一资源操作,就需要进程间共享变量,上一篇文章介绍了进程间共享数据的三大类Value.Array.Manager,这三种类的主要区别在于管理的 ...

随机推荐

  1. 正则表达式入门+实战(c#实现)

    如果有人和你说,如果不将字符串转换为数字,你要如何判断字符串是否由全数字组成?把字符串拆成char数组,然后放入一个循环,来判断每个char是否为数字?那你要如何判断手机号是否合法?IP是否合法呢?把 ...

  2. python中的return的返回与执行

    author:headsen  chen date:2018-03-21  15:12:09 notice:created by  headsen chen himself  and not allo ...

  3. 在虚拟机VMware上安装Linux系统教程

    目录: 一.       CentOS的安装 二.       RedHat的安装 三.       VMwaretools的安装 此处提供CentOS和RedHat两个版本的系统安装流程,至于选哪个 ...

  4. TypeScript入门(三)面向对象特性

    一.类(Class) 类是ts的核心,使用ts开发时,大部分代码都是写在类里面. 1.类的声明 多个对象有相同的属性和方法,但是状态不同. 声明类的属性和方法时可以加 访问控制符,作用是:类的属性和方 ...

  5. weka实际操作--构建分类、回归模型

    weka提供了几种处理数据的方式,其中分类和回归是平时用到最多的,也是非常容易理解的,分类就是在已有的数据基础上学习出一个分类函数或者构造出一个分类模型.这个函数或模型能够把数据集中地映射到某个给定的 ...

  6. bootbox的使用

    /* * className为green的方法 */ function alertMsgG(msg,title,fn){ bootbox.alert({ buttons: { ok: { label: ...

  7. nginx配置防盗链

    location ~* \.(gif|jpg|swf|flv|mp3|mp4|zip|rar)$ { root /home/soft; valid_referers *.qinyj.top downl ...

  8. 关于java中的值传递与引用传递遇到的问题

    来源于:https://www.nowcoder.com/test/question/done?tid=14302398&qid=25373#summary 下列java程序的输出结果为___ ...

  9. C#编程语言之委托与事件(一)—— C/C++函数指针和C#委托初步

    相信正在学习C#的人都有学习过C或C++的经验,本文要讲的第一个要点是C#中的委托(delegate,有些资料也叫代表).什么是委托,很多人都能自然而然地想到C/C++中的函数指针,事实上很多书和资料 ...

  10. 关于css的text-indent首行缩进两个字符和图片缩进的问题

    段落前面空两个字的距离,不要再使用空格了.应该使用首行缩进text-indent. text-indent可以使得容器内首行缩进一定单位.比如中文段落一般每段前空两个汉字. <style typ ...