簡體   English   中英

Python隊列一樣的數據結構

[英]Python queue like data structure

我正在處理一個偶爾接收新元素的列表。 添加了這些新元素后,我想對這些元素進行計算(准確地說,是估算KDE)。 我很快意識到,如果要使這個列表不受限制地增長,那么KDE函數的計算將花費很長時間,因此我認為使用Queue將是一個很好的數據結構。 但是,標准Python隊列( https://docs.python.org/2/library/queue.html )不允許訪問單獨的Queue元素,而不能將其“彈出”到隊列之外。 有沒有其他選擇?

換句話說:是否有一些Python庫可以讓我在不彈出隊列元素的情況下獲得它? (或者允許對隊列元素進行類似數組的索引編制?)

聽起來您可以通過使用雙端隊列來很好地利用它:

https://docs.python.org/2/library/collections.html#collections.deque

我不明白為什么不使用彈出機制就使用隊列。 如果您想在數組中進行密集增長,則可以使用1個數組和1個隊列。 首先是等待隊列 ,其次是處理數組

您可以對循環進行一些優化以加快循環速度。

例如你可能會改變

import xxx

for a in b_array:
   xxx.do_something(a)

對此:

import xxx

ds = xxx.do_something  #linking a function in memory speeds up foreach performance very much
for a in b_array:
   ds(a)

我認為您的問題與隊列大小無關。 如果是這樣,您必須檢查您的早期代碼。

正如@RemcoGerlich所建議的那樣,最好的前進方式(我認為)是保持索引指針“記憶”下一個合適的寫入位置(以列表大小為模)。 這將允許使用numpy進行非常快速的實現,也將使我實現指定的目標。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM