Blame | Last modification | View Log | Download
# Written by Bram Cohen# see LICENSE.txt for license informationfrom clock import clockclass Measure:def __init__(self, max_rate_period, fudge = 1):self.max_rate_period = max_rate_periodself.ratesince = clock() - fudgeself.last = self.ratesinceself.rate = 0.0self.total = 0ldef update_rate(self, amount):self.total += amountt = clock()self.rate = (self.rate * (self.last - self.ratesince) +amount) / (t - self.ratesince + 0.0001)self.last = tif self.ratesince < t - self.max_rate_period:self.ratesince = t - self.max_rate_perioddef get_rate(self):self.update_rate(0)return self.ratedef get_rate_noupdate(self):return self.ratedef time_until_rate(self, newrate):if self.rate <= newrate:return 0t = clock() - self.ratesincereturn ((self.rate * t) / newrate) - tdef get_total(self):return self.total