Мне нужен живой счетчик определенного события, которое произошло в последние X МИНУТ.
Приведенный ниже псевдокод выполняет то, что я пытаюсь сделать, но очень неэффективно.Если я сделаю WINDOW
10 минут (600 секунд) и произойдет много событий, приведенный ниже код станет тяжелым для запуска!
import time
import random
WINDOW = 20 #time, in seconds, for which we want to sum events before they expire
event = list()
while True:
#REMOVE FROM THE `event` list the elements more than 20 seconds old
event = [i for i in event if i+WINDOW>time.time()]
# Randomly make events happen
if random.randint(1,100)<50:
event.append((time.time()))
time.sleep(.5)
#Once every 10 seconds, print on screen the number of events that happened in the past 20 seconds
if round(time.time()) % 10 ==0:
print(f'We have {len(event)} events in the past {WINDOW} seconds')
time.sleep(1)