Package Anomos :: Module Measure
[hide private]
[frames] | no frames]

Source Code for Module Anomos.Measure

 1  # This program is free software: you can redistribute it and/or modify 
 2  # it under the terms of the GNU General Public License as published by 
 3  # the Free Software Foundation, either version 3 of the License, or 
 4  # (at your option) any later version. 
 5  # 
 6  # This program is distributed in the hope that it will be useful, 
 7  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
 8  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
 9  # GNU General Public License for more details. 
10  # 
11  # You should have received a copy of the GNU General Public License 
12  # along with this program.  If not, see <http://www.gnu.org/licenses/>. 
13   
14  # Written by Bram Cohen 
15   
16  from Anomos import bttime 
17   
18   
19 -class Measure(object):
20
21 - def __init__(self, max_rate_period, fudge=5):
22 self.max_rate_period = max_rate_period 23 self.ratesince = bttime() - fudge 24 self.last = self.ratesince 25 self.rate = 0.0 26 self.total = 0
27
28 - def update_rate(self, amount):
29 self.total += amount 30 t = bttime() 31 self.rate = (self.rate * (self.last - self.ratesince) + 32 amount) / (t - self.ratesince) 33 self.last = t 34 if self.ratesince < t - self.max_rate_period: 35 self.ratesince = t - self.max_rate_period
36
37 - def get_rate(self):
38 self.update_rate(0) 39 return self.rate
40
41 - def get_total(self):
42 return self.total
43