queue模块的使用
Posted marklijian
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了queue模块的使用相关的知识,希望对你有一定的参考价值。
queue模块
from queue import Queue,LifoQueue,PriorityQueue
# 队列——先进先出
que = Queue(5)
# 堆栈——先进后出
que = LifoQueue(5)
# 优先级队列——优先级低的先出
# que = PriorityQueue(5)
que.put('任意数据类型')
que.put(['任意数据类型(列表)'])
que.put('任意数据类型(字典)':'aaaa')
que.put('这是集合')
que.put(("元组也行",))
# 优先级队列专用(因为put里是元组,且第一个元素是可以互相比较的数据类型,这里默认用整型)
# que.put((2,'任意数据类型'))
# que.put((10,['任意数据类型(列表)']))
# que.put((5,'任意数据类型(字典)':'aaaa'))
# que.put((1,'这是集合'))
# que.put((100,("元组也行",)))
print(que.get())
que.task_done()
print(que.get())
que.task_done()
print(que.get())
que.task_done()
print(que.get())
que.task_done()
print(que.get())
que.task_done()
que.join()
Queue()队列
队列,先进先出
主要用法
- put()
- get()
- put/get的默认参数
- block
- 默认为true
- 当队列满了,再put就会进入等待状态
- 当队列空了,再get就会进入等待状态
- 当为False时
- 当队列满了,再put就会抛错
- 当队列空了,再get就会抛错
- 默认为true
- timeout
- 只有当block为True时,才有意义
- 设置等待状态所持续的时间,
超出时间一样会报错
- block
join()用法
- 一个acquire()就要task_done()一次
- 否则join()就阻塞住当前线程
LifoQueue()栈
栈,先进后出
主要用法
- put()
- get()
PriorityQueue()优先级队列
优先级队列,与优先级有关
主要用法
- put()
- get()
根据优先级来存放数据,基于堆,这个类基于的是大堆
即优先级低的先出来
都可以使用join()方法
重点:这里的每一种容器的put方法get时都要使用相同数量的task_down()方法
否则,join()方法会一直阻塞在这
传送门
XMind: ZEN - Trial Version
以上是关于queue模块的使用的主要内容,如果未能解决你的问题,请参考以下文章
python threading模块使用 以及python多线程操作的实践(使用Queue队列模块)