Эффективный кольцевой буфер с постоянным доступом - PullRequest
1 голос
/ 14 апреля 2020

В проекте машинного обучения, написанном на python, мне нужен эффективный циклический буфер типа collections.deque, но с постоянным доступом к любому элементу, например numpy.array. Проблема в том, что deque, очевидно, является связанным списком. Есть ли что-нибудь эффективное, легко реализуемое в библиотеке python, о которой я не знаю, для этого варианта использования?

Я мог бы просто иметь модифицированный фиксированный размер numpy.array с подвижным индексом 0 в моем вариант использования, я думаю, но это для моей python культуры, так как это не первый раз, когда мне нужно что-то подобное.

1 Ответ

0 голосов
/ 14 апреля 2020

collections.deque не совсем связанный список. Это двусвязный список массивов размером 64 . Я бы сказал, что это довольно приличный выбор, когда вам нужен как произвольный доступ, так и добавление на обоих концах без постоянного перераспределения.

Однако, если вы выполнили правильное профилирование производительности и этот циклический буфер действительно ваш bottle -не затем вы можете реализовать буфер в обычном C для производительности и добавить привязки к python.

...