Queue
Queue是Python标准库中的线程安全的队列(FIFO)实现,提供了一个适用于多线程编程的先进先出的数据结构,即队列,用来在生产者和消费者之间的信息传递。
二种队列形式
FIFO队列FIFO即First in First Out,先进先出。Queue提供了一个基本的FIFO容器,使用方法很简单。
参数:maxsize是一个整数,指明了队列中能存放的数据个数的上限。一旦达到上限,插入会导致堵塞,直到队列中的数据被消费掉。
案例1
2
| from queue import Queue
q = Queue(maxsize=3)
|
1
2
3
4
| # 存放数据
q.put('aaa')
# 获取数据
q.get()
|
LIFO队列LIFO即Last in First Out,后进先出。与栈的类似,使用也很简单,maxsize用法同上
1
2
| from queue import LifoQueue
q = LifoQueue()
|
常用方法告诉队列该任务已经处理完毕,队列的unfinished_tasks的属性-1
堵塞调用线程,直到队列中的所有任务被处理完毕,一旦有数据被加入队列,未完成的任务数就会增加。当消费者线程调用task_done()(意味着有消费者取得任务并完成任务),未完成的任务数就会减少。当未完成的任务数降到0(内部就是当队列的unfinished_tasks属性为0时),join()解除阻塞。