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