izo*_*ica 2 python queue python-3.x
我正在练习使用python(实际上是pypy3)进行编程比赛.对于一个问题我需要使用一个队列 - 我只需要放在一端并从另一端弹出.从我看来的文档中发现我有两个选择queue.Queue和queue.deque.我首先使用queue.Queue尝试了这个问题,但我的解决方案超出了时间限制.然后我切换到queue.deque,我通过了问题(尽管接近极限).
从文档中看来,两个容器都是线程安全的(至少对于deque的一些操作而言),而对于我的情况,我永远不会使用多个线程.在python中是否内置了一个简单的非同步队列?
该deque肯定不会做同步; 文档只是声明附加和弹出由于它们是原子的而保证是线程安全的.特别是在CPython中,除了Global Interpreter Lock之外没有锁定.如果你需要一个d ouble- ê nded 阙 UE,或者说FIFO,那是你应该使用什么.如果需要LIFO堆栈,请使用列表.在内部,deque实现使用双向链接的固定长度块列表.
在queue.Queue使用deque内部; 此外,它使用互斥锁来保护那些原子未实现的剩余操作deque.
因此,您的问题不是选择deque,而是很可能是算法的其他方面.
| 归档时间: |
|
| 查看次数: |
754 次 |
| 最近记录: |