python 标准库中队列相关模块介绍(子博客)
queue:
提供了同步(线程安全)类 Queue ,LifoQueue 和 PriorityQueue ,不同的线程可以利用这些数据类型来交换信息。这三个类的构造方法都有一个可选参数 maxsize ,它接受正整数作为输入值,用来限定队列的大。但是在满员的时候,这些类不会扔掉旧的元素来腾出位置。相反,如果队列满了,它就会被锁住,知道另外的线程移除了某个元素而腾出了位置。这一特性让这些类和适合用来控制活跃线程的数量。
multiprocessing:
这个包实现了自己的 Queue ,它跟 queue.Queue 类似,时设计给进程间通信用的。同时还有一个专门的
multiprocessing.JoinableQueue 类型,可以让任务管理变得更方便。
asyncio:
python 3.4 新提供的包,里面有 Queue ,LifoQueue ,PriorityQueue 和 JoinableQueue ,这些类受到
queue 和 multiprocess 模块的影响,但是为异步编程里的任务管理提供了专门的便利。
heapq:
跟上面三个模块不同的是,heapq 没有队列类,而是提供了 heappush 和 heappop 方法,让用户可以把可变序列当作堆队列或者优先队列来使用。