在 Python 中清除队列中的所有项目

在 Python 中清除队列中的所有项目:

  1. 使用队列上的 queue 属性来获取一个双端队列对象。
  2. 在双端队列对象上调用 clear() 方法,例如 q.queue.clear()。
  3. clear 方法将从队列中删除所有元素。
import queue

q = queue.Queue()

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

print(q.queue)  # ?️ deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

q.queue.clear()

print(q.queue)  # ?️ deque([])

queue 属性指向一个 deque 对象,而 deque 对象实现了 clear 方法。

clear() 方法从双端队列中删除所有元素,并使其长度为 0。

如果需要使操作线程安全,请使用互斥锁。

import queue

q = queue.Queue()

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

print(q.queue)  # ?️ deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

# ?️ use mutex lock
with q.mutex:
    q.queue.clear()

print(q.queue)  # ?️ deque([])

如果代码在多线程环境中运行,我们可以使用互斥锁。

另一种方法是简单地创建一个新队列并删除旧队列。

import queue

q = queue.Queue()

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

del q  # ?️ delete old queue


new_q = queue.Queue()

print(new_q.queue)  # ?️ deque([])