Python 标准库

queue

2022-11-29
  • import:: import queue
  • doc:: queue

queue 模块实现了多生产者、多消费者队列,特别适用于消息必须安全地在多线程间交换的线程编程。

Queue

[[FIFO]] 先进先出队列,[[multiprocessing]] 是其多进程版。

1
from queue import Queue
2
3
q = Queue()
4
q = Queue(maxsize=100) # 队列上限大小,0或小于0,则无限大
5
6
q.put() # 加入队列
7
q.get() # 从队列中移除
8
q.qsize() # 返回队列大小
9
q.empty() # 队列为空返回 True
10
q.full() # 队列如满返回 True
  • .task_done(): 告诉队列任务已经完成
  • .join(): 阻塞队列,直到所有任务都处理完成

一般 task_done() 和 join() 配合使用,join() 告诉队列任务都已经添加完成,可以执行了,task_doen 告诉队列,这个任务已经完成了,join() 会去判断队列所有任务是否都已经执行完毕。

在 daemon 为 True 的情况下,不使用 task_done 和 join 会导致进程提前结束。

LifoQueue

[[LIFO]] 后进先出队列,其他和 [[queue]] 一致。区别是使用 get() 删除的是最新插入的元素。

ProorityQueue

优先级队列。

SimpleQueue

[[FIFO]] 队列,无任务跟踪等功能