added rate monitor decorator
This commit is contained in:
35
zoetrope/ratemon.py
Normal file
35
zoetrope/ratemon.py
Normal 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?
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user