常见的队列类别
class one :普通队列,先进先出
from queue import Queue #导入
temp = Queue(maxsize=5) #申请一个能存放五个项目的队列
class two:先进后出队列
from queue import LifoQueue #导入
temp = LifoQueue(5) #申请
class three:优先级队列,没用过,直接放官方文档
https://docs.python.org/3.8/library/queue.html#queue.not_full
常见的索取、判断函数
假设先申明一个普通队列:temp = Queue(5),我们要存放的是变量a
索取部分
1、放东西进去:temp.put(a)
2、拿出来,没有东西就一直停留在这,等有了再拿出来:temp.get()
3、拿出来,设置一定的时间等待,超过该时间还没有东西就报错:temp.get(timeout = 3) #假设为3秒
4、拿出来丢掉:temp.get_nowait()
5、清空队列(注意比较特殊):temp.queue.clear()
······························································
判断部分
1、队列是否满了:temp.full() 满则返回True,否则False,下同
2、队列是否是空的:temp.empty()
避坑部分
1、在官方文档Class Queue()中有一个属性是self.not_full,害我用于判断的时候经常调用它,结果疯狂报错。该属性不是会返回True or False的…
2、判断的时候,一定要加上一个括号,如temp.full()否则也会有问题。
3、没有设置timeout的get(),其实是意味着无限时间的等待,而不是不等待。这也导致了,你虽然判断是empty,但是调用get总还是能拿到东西的。(你现在是empty,过一会后有东西进来就可以get到东西咯)
4、queue(队列)经常被用于多线程,这到没问题。但是由于会出现不同脚本文件循环导入,导致queue失效的问题,所以一言以避之就是只在同一个脚本中对queue进行操作。