Python 模块 queue-线程安全的 FIFO 队列

Python 模块 queue-线程安全的 FIFO 队列

模块 queue 实现了线程安全的 FIFO 队列(first-in first-out)。它被用于在不同的线程之间安全传递消息,例如生产者和消费者线程。

基本的 FIFO 队列


类 Queue 实现了基本的 FIFO 容器,使用方法 put() 添加元素到队列尾部,get() 方法从队列头部获取信息。

Python 模块 queue-线程安全的 FIFO 队列

执行:

Python 模块 queue-线程安全的 FIFO 队列

LIFO 队列


LIFO 队列(last-in first-out)正好相反,最后一个添加进去的元素,第一个取出。类似数据结构栈(Stack)。

Python 模块 queue-线程安全的 FIFO 队列

执行:

Python 模块 queue-线程安全的 FIFO 队列

优先级队列 Priority Queue


有时候从队列处理数据的顺序要依赖他们的某些属性,而不仅仅是他们添加进队列的顺序。这样的队列叫做优先级队列(Priority Queue),它依赖队列中元素的优先级处理元素。查看下面的例子。

Python 模块 queue-线程安全的 FIFO 队列

执行:

Python 模块 queue-线程安全的 FIFO 队列

本例使用多个线程从队列获取 Job,当 get() 获取 Job 时,会根据 Job 定义好的优先级来获取元素,比较值越小,优先级越高。


分享到:


相關文章: