forked from LBRYCommunity/lbry-sdk
18 lines
463 B
Python
18 lines
463 B
Python
|
import collections
|
||
|
|
||
|
|
||
|
class Track(object):
|
||
|
"""Track and summarize observations of metrics."""
|
||
|
def __init__(self):
|
||
|
self.data = collections.defaultdict(list)
|
||
|
|
||
|
def add_observation(self, metric, value):
|
||
|
self.data[metric].append(value)
|
||
|
|
||
|
def summarize(self, metric, op=sum):
|
||
|
"""Apply `op` on the current values for `metric`.
|
||
|
|
||
|
This operation also resets the metric.
|
||
|
"""
|
||
|
return op(self.data.pop(metric, []))
|