【发布时间】:2023-03-13 12:08:01
【问题描述】:
我正在练习使用 python(实际上是 pypy3)进行编程比赛。对于一个问题,我需要使用一个队列——我只需要放在一端并从另一端弹出。从我在文档中找到的内容看来,我有两个选项queue.Queue 和queue.deque。我首先使用 queue.Queue 尝试了该问题,但我的解决方案超出了时间限制。然后我切换到queue.deque,我通过了问题(虽然接近极限)。
从文档看来,这两个容器都是线程安全的(至少对于双端队列的某些操作而言),而对于我的情况,我永远不会使用多个线程。 python中是否内置了一个简单的非同步队列?
【问题讨论】:
-
你试过
collections.deque吗? -
@PM2Ring 看来这个容器也同步了:
Deques support thread-safe, memory efficient appends and pops from either side of the deque with approximately the same O(1) performance in either direction. -
@PM2Ring 我明白了,所以操作不需要锁定。因此,这种结构似乎可以解决问题。您链接到的问题不会将 colllection.deque 与 queue.deque 进行比较。他们如何比较?有什么区别?
-
queue.Queue(在 Python 2 中也称为Queue.Queue)在内部使用collections.deque;如果您不需要queue.Queue的特殊功能,您应该使用普通的collections.deque。
标签: python python-3.x queue