Python队列就像数据结构一样

时间:2014-07-02 12:38:07

标签: python data-structures queue

我正在处理一个偶尔接收新元素的列表。添加这些新元素后,我想对这些元素进行计算(准确地说,估计一个KDE)。我很快意识到如果这个列表无限增长,KDE函数的计算将花费很长时间,所以我认为Queue将是一个很好的数据结构。但是,标准Python队列(https://docs.python.org/2/library/queue.html)不允许访问单个Queue元素而不会弹出'他们不在队列中。还有其他选择吗?

换句话说:是否有一些Python库允许我获取队列元素而不会弹出它? (或者是否允许对队列元素进行类似数组的索引?)

3 个答案:

答案 0 :(得分:4)

答案 1 :(得分:0)

我不明白为什么你使用队列,如果你不使用弹出机制。如果你想知道在你的数组中owercrowd你可以使用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)

我认为你的问题与队列大小无关。如果是,你必须检查你的早期代码。

答案 2 :(得分:0)

正如@RemcoGerlich建议的那样,前进的最佳方法(我相信)是维护一个索引指针,该指针“记忆”下一个合适的写入位置,以模块的大小为模。这将允许使用numpy非常快速地实现,并且还允许我实现我指定的目标。