Я ищу эффективный способ решения конкретной проблемы в Python.У меня есть поток событий, прибывающих каждое со связанной отметкой времени.Концептуально я добавляю эти события в конец упорядоченного по времени списка и выполняю их обработку, внося некоторые изменения в различные значения и средние значения (в зависимости от типа события).Время события истекает через 15 минут, когда я удаляю событие в начале списка и вносю соответствующие корректировки в мои подсчеты и средние значения.Класс deque в модуле коллекций действительно подходит для этого.
Теперь к проблеме, я хочу расширить эту идею, но также сохранить счетчики и средние значения для событий за последние 5 и 1 минутные периоды.Насколько я понимаю, я не могу эффективно тайм-аутить события в эти периоды, используя одну деку.Я мог бы сохранить пару индексов в очереди следующих событий, которые должны быть установлены по тайм-ауту на границах 5 минут и 1 минута, но, как я понимаю, индексация в deque - это операция O (n).Я также мог бы использовать 3 отдельных запроса, по одному на каждый период времени с событиями (или ссылками на события), дублированными в каждом списке.Это просто ужасно.
Решение, с которым я играю, заключается в использовании связанного списка, но это кажется довольно низким уровнем для Python;Я не думаю, что Python предоставляет структуру связанного списка, поэтому мне нужно написать свою собственную.Есть некоторые дополнительные ограничения в том, что существует большое количество событий, а память довольно ограничена.Буду признателен за любые другие предложения или идеи о том, как я могу решить эту проблему.