1.经过线程和进程的对比,不难的知道,线程和进程有相当大的区别,如全局变量资源不能够共享。

2.在不同的进程间,如何实现通信呢?

 需要提及的一个概念就是Queue,它是一个消息队列,下面通过一个例子来更好的解释这个功能

#coding=utf-8
from multiprocessing import Queue
q=Queue(3) #初始化一个Queue对象,最多可接收三条put消息
q.put("消息1")
q.put("消息2")
print(q.full()) #False
q.put("消息3")
print(q.full()) #True #因为消息列队已满下面的try都会抛出异常,第一个try会等待2秒后再抛出异常,第二个Try会立刻抛出异常
try:
q.put("消息4",True,2)
except:
print("消息列队已满,现有消息数量:%s"%q.qsize()) try:
q.put_nowait("消息4")
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())

3.初始化Queue()对象时(例如:q=Queue()),若括号中没有指定最大可接收的消息数量,或数量为负值,那么就代表可接受的消息数量没有上限(直到内存的尽头);

4.Queue的一些语句

  • Queue.qsize():返回当前队列包含的消息数量;

  • Queue.empty():如果队列为空,返回True,反之False ;

  • Queue.full():如果队列满了,返回True,反之False;

  • Queue.get([block[, timeout]]):获取队列中的一条消息,然后将其从列队中移除,block默认值为True;

  1)如果block使用默认值,且没有设置timeout(单位秒),消息列队如果为空,此时程序将被阻塞(停在读取状态),直到从消息列队读到消息为止,如果设置了timeout,则会等待timeout秒,若还没读取到任何消息,则抛出"Queue.Empty"异常;

  2)如果block值为False,消息列队如果为空,则会立刻抛出"Queue.Empty"异常;

     Queue.get_nowait():相当Queue.get(False);

     Queue.put(item,[block[, timeout]]):将item消息写入队列,block默认值为True; 

        1)如果block使用默认值,且没有设置timeout(单位秒),消息列队如果已经没

        有空间可写入,此时程序将被阻塞(停在写入状态),直到从消息列队腾出空间为止,

        如果设置了timeout,则会等待timeout秒,若还没空间,则抛出"Queue.Full"异常;

        2)如果block值为False,消息列队如果没有空间可写入,则会立刻抛出"Queue.Full"异常;

             Queue.put_nowait(item):相当Queue.put(item, False);

最新文章

  1. LInux MySQL 数据库 的一些操作
  2. wireshark 分析重传包
  3. Mysql 查看版本号
  4. 2013年最新流行的响应式 WordPress 主题【上篇】
  5. OC NSString(字符串)
  6. WIN10系统 Solidworks 2015 Toolbox插件提示 failed to create toolboxl ibrary object 解决方法
  7. 6.5 THUSC 考试题解
  8. Mysql 源码编译教程贴
  9. proxool数据库连接池配置
  10. Java学习笔记——排序算法之进阶排序(堆排序与分治并归排序)
  11. MySQL5.6安装(RPM)笔记
  12. 双字节验证:vue输入框中英文字数长度验证
  13. Hive通过mysql元数据表删除分区
  14. django-debug-toolbar和Django 日志配置
  15. C++11 类型后置语法
  16. andrid 上传图片 asp.net 后台接收并保存
  17. Restful API 设计参考原则
  18. Android-LayoutAnimation
  19. http和websocket共用同一端口
  20. UAT测试后上线出现问题的引起的思考

热门文章

  1. MySQL监控SQL及命中率脚本
  2. 21_HTML&CSS
  3. 按时间划分备份MySQL脚本
  4. GitHub报错error: bad signature
  5. java实现多个数字求和_图形化界面
  6. oracle查询表空间的位置
  7. 创业笔记-Node.js入门之基于事件驱动的回调
  8. c#将List<T>转换成DataSet
  9. OpenCV基础篇之读取显示图片
  10. HDFS HA架构以及源代码引导