我需要使用一个只包含一个元素的队列,任何新元素都会丢弃现有元素。有内置解决方案吗?
我编码的解决方案有效,但我努力不重新发明轮子:)
import Queue
def myput(q, what):
# empty the queue
while not q.empty():
q.get()
q.put(what)
q = Queue.Queue()
print("queue size: {}".format(q.qsize()))
myput(q, "hello")
myput(q, "hello")
myput(q, "hello")
print("queue size: {}".format(q.qsize()))
Run Code Online (Sandbox Code Playgroud)
编辑:遵循一些评论和答案——我知道一个变量就是为此:) 不过,在我的程序中,队列将用于进程之间的通信。
当您指定使用队列在进程之间进行通信时,您应该使用multiprocesssing.Queue.
为了确保队列中一次只有一个项目,您可以让生产者共享一个锁,并且在锁定时首先get_nowait从队列中删除put。这类似于代码中的循环,但没有两个生产者在放入新项目之前都清空队列的竞争条件,因此最终在队列中出现两个项目。
| 归档时间: |
|
| 查看次数: |
1847 次 |
| 最近记录: |