在 Python 中从队列中获取一个项目而不删除它

使用队列的 queue 属性从队列中获取一个项目而不删除它,例如 q.queue[0]。 队列属性指向一个支持索引的 deque 对象。

import queue

q = queue.Queue()

for item in range(10):
    q.put(item)


print(q.queue[0])  # 👉️ 0
print(q.queue[0])  # 👉️ 0

print(q.queue[1])  # 👉️ 1

queue 属性使我们能够访问 deque 对象,并且 deque 对象支持 popleft() 操作和索引。

如果不想删除队列的特定元素而只想访问它,请使用 q.queue[0]

如果我们使用 PriorityQueue 类,此方法也适用。

import queue

q = queue.PriorityQueue(maxsize=20)

for item in range(10):
    q.put(item)


print(q.queue[0])  # 👉️ 0
print(q.queue[0])  # 👉️ 0

如果我们使用 collections.deque 类,我们还可以访问特定索引处的队列。

from collections import deque

deq = deque(['a', 'b', 'c'])

print(deq[0])  # 👉️ 'a'
print(deq[1])  # 👉️ 'b'
print(deq[2])  # 👉️ 'c'

当我们在 deque 对象的特定索引处访问队列项时,该项保留在队列中。

相反,如果我们在队列对象上使用 get() 方法或在 deque 对象上使用 popleft() 或 pop() 方法,则该项目将被返回并从队列中删除。