2016-07-26 84 views
1

我看到的所有內容都是關於列表的,但這是關於events = queue.queue()的 這是一個包含我想要提取的對象的隊列,但是我將如何獲取該隊列中最後N個元素?從隊列中獲取最後n個項目

+0

你的意思是**第一** N元素?你不能從'隊列'末尾彈出元素(除非你使用'deque') – DeepSpace

回答

1

根據定義,你不能。

你可以做的是使用循環或理解到get第一(你不能getqueue結束)N元素:

N = 2 
first_N_elements = [my_queue.get() for _ in range(N)] 
0

如果你多線程「,來自該隊列的最後N個元素」是未定義的,並且這個問題沒有意義。

如果沒有多線程,則取決於您是否在意其他元素(而不是最後一個N)。

如果不這樣做:

for i in range(events.qsize() - N): 
    events.get() 

後,得到N項

如果你不想扔掉其他物品,你就得一切移到不同的數據結構(如列表)。排隊的要點是要按照一定的順序進行。