Количество событий за последние XX секунд
От: ioctl  
Дата: 02.03.21 10:15
Оценка:
Как бы сделать умнее (по расходу памяти, ну и может по константам) чем:


import time
from collections import deque

class FpsCounter:
    def __init__(self, XX):
        self._time_window = XX
        self._q = deque()
        self._cnt = 0

    def _trim_queue(self):
        q = self._q

        while q and q[0] < time.time() - self._time_window:
            q.popleft()
            self._cnt -= 1

    def event_happened(self):
        self._q.append(time.time())
        self._cnt += 1

        self._trim_queue()

    def get_count(self):
        self._trim_queue()
        return self._cnt


# Запоминаем события в очередь — увеличиваем счетчик cnt. В методе _trim_queue выкидываем все старые события, счетчик декрементируем.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.