我想知道队列中最近排队的项目是什么。我怎么知道这个?
换句话说,如何找到队列将出队的最后一个项目(或最近入队的项目)
我不完全确定您要在这里实现什么,但以下可能有效,只需检查队列是否为空。
>>> from Queue import Queue
>>> q = Queue()
>>> _ = [q.put(index) for index in xrange(2, 10)]
>>> if not q.empty():
... q.queue[-1]
9
>>>
我假设您使用的是 python 自己的Queue
对象,我会推荐它,因为它是线程安全的:)
你是如何实现你的队列的?如果它被实现为一个列表,那么大概yourdata.pop(0)
会删除并返回第一个项目。最近排队的项目将位于列表的末尾,yourdata.pop()
以删除并返回,或者 yourdata[-1] 以查看项目而不修改列表内容。
将列表用于队列是一个坏主意,因为您会招致性能损失,但是:每次删除第一个项目时,都必须更新列表中的所有后续项目。您将从专门的队列实现中获得更好的性能,例如collections.deque
. 参见讨论:
http ://docs.python.org/tutorial/datastructures.html#using-lists-as-queues
有关 Python 中 Queue 与 deque 的信息,请参阅: Queue.Queue 与 collections.deque