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) 如果满了 立即抛出异常
 1 from multiprocessing import Queue
 2 if __name__ == "__main__":
 3     q = Queue(3)
 4     q.put("消息1")
 5     q.put("消息2")
 6     print(q.full())
 7     q.put("消息3")
 8     print(q.full())
 9
10     # 从消息队列取数据 推荐两种方法 1 捕获异常   2  判断
11
12     try :
13         q.put("消息4",True , 2)   # 尝试写入,如果满了 2秒后抛出异常
14     except:
15         print("已经满了,现有消息%s条"%q.qsize())
16     try :
17         q.put_nowait("消息4")   # 尝试写入 如果满了立即抛出异常
18         #相当于q.put(item,False)
19     except:
20         print("已经满了,现有消息%s条"%q.qsize())
21
22     if not q.full():
23         q.put_nowait("消息4")
24
25     if not q.empty():
26         for i in range(q.qsize()):
27             print(q.get_nowait())

在进程池当中使用Queue 需要使用Manager().Queue()
 1 from multiprocessing  import Manager,Pool
 2 import os
 3 def reader(q):
 4     print("我是子进程%s,我的父进程是%s,我开始读取消息"%( os.getpid(),os.getppid() ) )
 5     for i in range(q.qsize()):
 6         print(q.get())
 7
 8 def writer(q):
 9     print("我是子进程%s,我的父进程是%s,我开始写消息"%( os.getpid(),os.getppid() ))
10     for i in "DongGe":
11         q.put(i)
12
13
14 if __name__ == "__main__":
15     p = Pool()
16     q = Manager().Queue()
17     p.apply(writer,(q,))
18     p.apply(reader,(q,))
19     #关闭进程池 不再接收任务
20     p.close()
21     #阻塞 等待进程结束,必须在close之后
22     p.join()
23
24     print("结束")


转载于:https://www.cnblogs.com/Lin-Yi/p/7360960.html

python多进程之间的通信:消息队列Queue相关推荐

  1. python笔记 7-8 进程池 进程通信 迭代器 消息队列 Queue 协程 和正则表达式

    day7 进程 进程池 进程通信 迭代器 消息队列 Queue 作用 用于多个进程间的通信 操作put放入消息(值) put_nowait() 放入值,不等待 如果队满,则报错 get获取消息(值) ...

  2. python队列线程池_实例详解:python高级编程之消息队列(Queue)与进程池(Pool)

    今天为大家带来的内容是:python高级编程之消息队列(Queue)与进程池(Pool),结合了实例的形式详细分析了Python消息队列与进程池的相关原理.使用技巧与操作注意事项!!! Queue消息 ...

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

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

  4. 消息队列Queue大全

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

  5. LiteOS内核源码分析:消息队列Queue

    本文分享自华为云社区<LiteOS内核源码分析系列十 消息队列Queue>,原文作者:zhushy . 队列(Queue)是一种常用于任务间通信的数据结构.任务能够从队列里面读取消息,当队 ...

  6. ZUCC_操作系统原理实验_Lab9进程的通信消息队列

    lab9进程的通信–消息队列 一.两个进程并发执行,通过消息队列,分别进行消息的发送和接收 1.代码: //接受消息 #include<stdio.h> #include<stdli ...

  7. python3多进程 queue 取值_【整理】python多进程之间共享queue | 勤奋的小青蛙

    默认情况下,使用multiprocess.Queue()只是在两个进程之间进行通信,如下示例: import multiprocessing, time def task(args): count = ...

  8. Linux进程之间通信 消息队列

    使用命令 ipcs -q  查看对应的消息队列 代码 文件接收者 #include <sys/types.h> #include <stdio.h> #include < ...

  9. python 归纳 (十二)_并发队列Queue的使用

    # -*- coding: UTF-8 -*- """ 学习队列 Queue总结:1. 队列可以设置大小,也可以无限大小2. 空了,满了,读写时可以阻塞,也可以报错3. ...

最新文章

  1. 淄博职业学院计算机应用,2019年淄博职业学院单独招生云计算技术与应用专业技能测试实施细则...
  2. C#中生产者线程和消费者线程同步的实现
  3. ENAS加载自己的数据集之路
  4. 安装 tensorlayer
  5. DirectUI介绍
  6. 策略模式在JDK 源码中的体现
  7. 5.8 正则化和数据标准化
  8. how is SAP UI5 configuration.js loaded in the runtime
  9. 2021年广西艺术高考成绩查询,2021年广西美术高考成绩查询网址:https://www.gxeea.cn/...
  10. SQL数据库“单个用户”不能访问,设置为多个用户的解决方法
  11. 代码管理学:功能实现,一定要与界面分开
  12. 《深入浅出统计学》笔记二--第二章:集中趋势的量度,第三章:分散性与变异性的量度
  13. php 连接 sybase,thinkphp连接sybase数据库
  14. 科普类毕业论文文献包含哪些?
  15. juniper防火墙软件升级
  16. EU Long-term Dataset with Multiple Sensors for Autonomous Driving
  17. IE11卸载不掉的问题
  18. Feinstein Institute研究人员解码脑沟和白质区域的神经活动,预测手指运动和手部触觉刺激...
  19. 大学生极速成长系列教程—7.IT类大学生如何打造个人品牌
  20. Unity | 如何使用webm透明视频

热门文章

  1. jquery validate验证remote时的多状态问题
  2. c#调用带有安全认证的java webservice
  3. 第十节 4基于ashx方式的ASP.Net开发
  4. 好用的chrome插件总结
  5. LeetCode(575)——分糖果(JavaScript)
  6. jQuery实现影院选座订座效果
  7. 浅谈CSS3中的弹性布局
  8. am最新版安装包_am软件下载-am剪辑软件(alight motion)中文版下载v2.3.1-11玩家网
  9. 银行不放款可以换银行贷款吗?
  10. 有什么激励你一辈子的句子?