文档阅读 - Python queue

查看原文

Python Queue 模块是为生产者-消费者模型而设计的。在多线程的场景里,我们需要有一个线程安全的手段将信息在线程之间交换。基本上这个模块基于 threading 模块,做了一些锁的操作。这个模块有 Queue (FIFO), LifoQueue (LIFO), PriorityQueue (小值最优先) 三种队列。它设计了几个简单的 API:我们可以通过 put 放个 Python 对象进去,然后使用 get 取出来。get 对象出来时,如果用 get(block=True) 那么操作会堵塞直到有对象取出来;如果用 get(block=True, timeout=3) 那么操作会堵塞三秒直到有对象取出来,否则抛异常 Empty。取出来的对象用 .task_done() 标记取出来的对象处理完了。我们可以用 .qsize() 看队列长度, .empty() 检查是否队列空, full 检查是否队列满, .join()堵塞队列直到所有对象处理完。