队列模块实现多生产者,多消费者队列。 当必须在多个线程之间安全地交换信息时,它在线程编程中特别有用。 此模块中的Queue类实现了所有必需的锁定语义。 这取决于Python中线程支持的可用性; 看到线程模块。
模块实现了三种类型的队列,它们的区别仅仅是条目取回的顺序。在 FIFO 队列中,先添加的任务先取回。在 LIFO 队列中,最近被添加的条目先取回(操作类似一个堆栈)。优先级队列中,条目将保持排序( 使用 heapq
模块 ) 并且最小值的条目第一个返回。
在内部,这三个类型的队列使用锁来临时阻塞竞争线程;然而,它们并未被设计用于线程的重入性处理。
此外,模块实现了一个 "简单的" FIFO 队列类型, SimpleQueue
,这个特殊实现为小功能在交换中提供额外的保障。
(队列相对列表来说更安全,在多线程的时候,列表可能会两个进程同时操作一个数据,而队列就可以保证只操作一个数据)
</