📅  最后修改于: 2023-12-03 15:04:20.026000             🧑  作者: Mango
在 Python 中,queue 和 collections 都提供了 queue 的数据结构,但是它们之间有着很大的区别。
queue.Queue 提供了线程安全的 FIFO(先进先出)队列,是一个多线程程序中最常用的并发数据结构。Python 的 queue 模块实现了多线程编程中的队列。
import queue
q = queue.Queue()
q.put('a')
q.put('b')
q.put('c')
while not q.empty():
print(q.get())
输出为:
a
b
c
collections.deque 也是一个队列,在 Python 中也是线程安全的,但是与 queue.Queue 不同,它实现了高效的双向队列。deque 是一个双向队列(double-ended queue),可以从头或尾添加或删除元素。
from collections import deque
q = deque()
q.append('a')
q.append('b')
q.append('c')
while len(q) > 0:
print(q.popleft())
输出为:
a
b
c
总结起来,如果你需要用到多线程,需要用到线程安全的队列,那么就使用 queue.Queue,如果你只是需要一个简单的队列而已,那么就使用 collections.deque。
Python 中的 queue 和 collections 都提供了队列数据结构。queue.Queue 是线程安全的 FIFO 队列,适用于多线程编程场景;collections.deque 是线程安全的高效双向队列,适用于单线程的场景。具体使用时,建议根据实际场景选择。