queue被称为消息队列,数据不会混乱,也可以用于复杂业务传递元素,队列是多线程的利器,其内部有锁的机制可以控制数据的统一且安全

  queue.Queue()按照先进先出原则

  queue.LifoQueue()按照后进先出原则

  queue.PriorityQueue()优先级队列,数字越小优先级越高

import queue
import time
t = queue.Queue(2)#设置列队大小,如果有三条数据过来那就会等待,直到取走为止
t.put('a')#put 放入列队,
t.get()
t.put('b')
t.put('c')
while True:
print(t.get())#取
time.sleep(2)

full,empty

import queue
t = queue.Queue(3)#不填就是无限
t.put('a')
print(t.empty())#问:没了吗? 如果列队中有值返回False
t.get()
print(t.empty())#没了,返回True
t.put('b')
t.put('c')
t.put('d')
print(t.full())#问:满了吗? 如果列队中满了返回True
t.get()
print(t.full())#没有满,返回false
#如果满了使用put或者空了使用get同样会报错

put

  block=True

import queue
t = queue.Queue(maxsize=3)
t.put('a')
t.put('b')
t.put('c')
t.put('d',True,3)
#Queue.put(item, block=True, timeout=None),item元素,如果block=True且timeout=None该方法将一直等待直到有队列有空余空间
#如果block=True且timeout=3,也就是在3秒后抛出异常

  block=False

import queue
t = queue.Queue(maxsize=3)
t.put('a')
t.put('b')
t.put('c')
t.put('d',False,None)#只要block=False,不管设不设时间,立马就会抛出异常

get

  block=True

import queue
t = queue.Queue(maxsize=3)
t.get(block=True,timeout=3)#报错了
#t.get(block=True)#这样为空就等于都不写,不报错
#默认Queue.get(block=True, timeout=None),如果设置了timeout

  block=False

import queue
t = queue.Queue(maxsize=3)
t.get(block=False,timeout=3)#不管设不设时间,立即报错

get_nowait和put_nowait

t.get_nowait()#立即取出一个元素,t.get_nowait(item)等价于get(item,False)
t.put_nowait('f')#立即放入一个元素,t.put_nowait(item)等价于put(item, False)

其他

t.task_done()#在完成一项工作之后,queue.task_done()函数向任务已经完成的队列发送一个信号
print(t.qsize())#返回当前队列中元素个数
t.join()#实际上意味着等到队列为空,再执行别的操作

#以上是线程queue,如果是进程之间需要相互通信(一发一收),可以主进程的对象作为一个参数传给子进程,只是copy主进程的对象,主进程和子进程不是相互公用同一数据

版权声明:本文原创发表于 博客园,作者为 RainBol本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。

最新文章

  1. OpenSceneGraph in ActiveX by ActiveQt
  2. git 配置忽略文件(忽略UserInterfaceState.xcuserstate,Breakpoints_v2.xcbkptlist)
  3. ASP.NET MVC在布局页上使用模型(model)
  4. HDUOJ-------1052Tian Ji -- The Horse Racing(田忌赛马)
  5. iOS svn版本回退 cornerstone
  6. 用python+selenium导入excel文件
  7. AutoTile 自动拼接(五) 学习与实践
  8. 解决 apache poi 转换 word(docx) 文件到 html 文件表格没边框的问题
  9. Java开发速度神器Lombok,Eclipse端安装使用教程
  10. MySQL Join 的实现原理
  11. superset在 centos 7安装运行
  12. HashMap中的TreeNode,红黑树源码分析
  13. C# 监听HTTP请求
  14. linux上用newman+postman进行自动化测试
  15. 矩阵优化dp
  16. 蓝精灵:寻找神秘村Smurfs: The Lost Village迅雷下载
  17. IIS发布网站遇到 编译器错误消息: CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary 编
  18. 各种liunx发行版本包管理器对比
  19. bzoj 3059: 归途与征程
  20. AutoMapper之如何开始,适合入门和演示

热门文章

  1. 老司机带大家领略MySQL中的乐观锁和悲观锁
  2. 3.WXML语法
  3. 微信公众号使用vue,安卓端点击按钮404,ios访问正常问题
  4. Django之用户注册
  5. xsy 2412【BZOJ4569】【Scoi2016】萌萌哒
  6. 剑指offer41:所有和为S的连续正数序列,例如,有多少种连续的正数序列的和为100
  7. WUSTOJ 1335: Similar Word(Java)
  8. H5中表格的用法
  9. 简介:google ctemplate:简单易用的文字模板(转载)
  10. 【转载】Sqlserver使用SUBSTRING函数截取字符串