【问题标题】:Efficient circular buffer with constant-time access具有恒定时间访问的高效循环缓冲区
【发布时间】:2020-07-27 12:14:45
【问题描述】:

在一个用 python 编写的机器学习项目中,我需要一个高效的循环缓冲区,例如 collections.deque,但可以持续访问任何元素,例如 numpy.array。问题是 deque 显然是一个链表。请在我不知道此用例的python库中轻松实现一些有效的东西吗?

我想我可以在我的用例中简单地修改固定大小的numpy.array,并在我的用例中移动 0 索引,但这是我的 python 文化,因为这不是我第一次需要这样的东西。

【问题讨论】:

    标签: python buffer constant-time


    【解决方案1】:

    collections.deque 不完全是一个链表。这是doubly-linked list of arrays of size 64。当您希望在两端同时进行随机访问和附加而不需要不断重新分配时,我会说这是一个相当不错的选择。

    但是,如果您已经进行了适当的性能分析并且该循环缓冲区确实是您的瓶颈,那么您可以在纯 C 中实现缓冲区以提高性能并添加到 python 的绑定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-13
      • 1970-01-01
      相关资源
      最近更新 更多