在用 python 编写的机器学习项目中,我需要一个像
collections.deque
这样的高效循环缓冲区,但可以恒定时间访问像 numpy.array
这样的任何元素。问题是双端队列显然是一个链表。在 python 库中是否有一些我不知道的用于此用例的有效且容易实现的东西?
我想,我可以简单地在我的用例中使用一个修改后的固定大小
numpy.array
,并带有移动的 0 索引,但这是为了我的 python 文化,因为这不是我第一次需要这样的东西。
collections.deque
不完全是一个链表。这是一个大小为 64 的数组的双向链表。我想说,当您想要随机访问和在两端附加而不需要不断重新分配时,这是一个相当不错的选择。
但是,如果您已经完成了正确的性能分析,并且循环缓冲区确实是您的瓶颈,那么您可以用纯 C 实现该缓冲区以提高性能,并将绑定添加到 python。