queue模块的使用

mac2022-06-30  74

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就会抛错timeout 只有当block为True时,才有意义设置等待状态所持续的时间, 超出时间一样会报错

join()用法

一个acquire()就要task_done()一次否则join()就阻塞住当前线程

LifoQueue()栈

栈,先进后出

主要用法

put()get()

PriorityQueue()优先级队列

优先级队列,与优先级有关

主要用法

put()get()

根据优先级来存放数据,基于堆,这个类基于的是大堆

即优先级低的先出来

都可以使用join()方法

重点:这里的每一种容器的put方法get时都要使用相同数量的task_down()方法

否则,join()方法会一直阻塞在这

传送门

XMind: ZEN - Trial Version

转载于:https://www.cnblogs.com/marklijian/p/11575213.html

最新回复(0)