added rate monitor decorator

This commit is contained in:
2021-09-15 15:41:25 +02:00
parent e8c4630ffa
commit f2c315bebb

35
zoetrope/ratemon.py Normal file
View File

@ -0,0 +1,35 @@
from time import time
def ratemon(collection):
iterator = enumerate(collection)
t_start = t_last = time()
while True:
counter, value = next(iterator)
t_now = time()
delta_start = t_now - t_start
delta_last = t_now - t_last
t_last = t_now
try:
rate_average = (counter + 1) / delta_start
except ZeroDivisionError:
rate_average = 0
try:
rate_current = 1 / delta_last
except ZeroDivisionError:
rate_current = 0
yield rate_average, rate_current, value
#TODO:
#- define averaging window?
#- round results?