我正在处理一个偶尔接收新元素的列表。添加这些新元素后,我想对这些元素进行计算(准确地说,估计一个KDE)。我很快意识到如果这个列表无限增长,KDE函数的计算将花费很长时间,所以我认为Queue将是一个很好的数据结构。但是,标准Python队列(https://docs.python.org/2/library/queue.html)不允许访问单个Queue元素而不会弹出'他们不在队列中。还有其他选择吗?
换句话说:是否有一些Python库允许我获取队列元素而不会弹出它? (或者是否允许对队列元素进行类似数组的索引?)
答案 0 :(得分:4)
听起来你可以很好地使用deque:
https://docs.python.org/2/library/collections.html#collections.deque
答案 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非常快速地实现,并且还允许我实现我指定的目标。