Python中使用Queue

在大多数情况下,我们经常会遇到多线程的情况。线程间的同步和互斥、数据共享等都有可能会引发问题。
在某些情况下,我们需要通过mutex、condition、event等提供的机制和方法来确保同步和互斥的问题,稍有不慎就会陷入死锁或者威胁到线程间数据的安全。
这时候,Queue给我们提供了一种较为简便的解决方案。
Queue包含三种队列:

  • Queue.Queue(maxsize) 指传统意义上常见的队列:先进先出,队长为maxsize
  • Queue.LifoQueue(maxsize) 后进先出,数据结构上等同于传统意义上的栈
  • Queue.PriorityQueue(maxsize) 优先级队列

需要额外注意的是,Queue模块本身提供了锁原语,模块层面上支持多线程数据共享,是线程安全的。相比collections.dequeQueue旨在提供线程安全的解决方法,API操作自带锁原语,而collections.deque更偏重于数据结构中的队列概念,支持 in查询。
最后需要提一句的是,Python中的import机制也是线程安全的,它利用串行引入的机制保证这一点。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容