Как бы сделать умнее (по расходу памяти, ну и может по константам) чем:
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 выкидываем все старые события, счетчик декрементируем.