##### queue 库 - `queue`模块提供了多种队列实现,用于在多线程编程中进行线程安全的队列操作 - [[queue.消息队列]] ```python import queue ``` ##### queue 主要API - `class queue.Queue(maxsize=0)` 先进先出队列类 - `class queue.LifoQueue(maxsize=0)` 先进后出队列类 - `class queue.PriorityQueue(maxsize=0)` 优先级队列类 ```python # 通用实例方法 Queue.qsize() # 返回队列的大致大小 Queue.empty() # 如果队列为空,返回 True ,否则返回 False Queue.full() # 如果队列是满的返回 True ,否则返回 False Queue.put(item, block=True, timeout=None) # 将 item 放入队列 # block = False, 一旦队列中没有空位以将对象放入队列中, 直接报错 # block = true, timeout = None,阻塞至有空闲空间可用 # 如果 timeout 是个正数,将最多阻塞 timeout 秒,如果在这段时间没有可用的空闲插槽,将引发 Full 异常。反之 (block 是 false),如果空闲插槽立即可用,则把 item 放入队列,否则引发 Full 异常 (在这种情况下,timeout 将被忽略)。 Queue.get(block=True, timeout=None) # 从队列中移除并返回一个项目 # block = False, 一旦队列中没有项目提取, 直接报错 # block = true, timeout = None,阻塞至项目可得到 # 如果 timeout 是个正数,将最多阻塞 timeout 秒,如果在这段时间内项目不能得到,将引发 Empty 异常。反之 (block 是 false) , 如果一个项目立即可得到,则返回一个项目,否则引发 Empty 异常 (这种情况下,timeout 将被忽略)。 ```