def update(self, n, t):
if self.avg_n and self.avg_t:<EOL><INDENT>self.avg_n = (self.avg_n * self.weight) + n<EOL>self.avg_t = (self.avg_t * self.weight) + t<EOL><DEDENT>else:<EOL><INDENT>self.avg_n = n<EOL>self.avg_t = t<EOL><DEDENT>new_n = int(self.avg_rate * self.target_t)<EOL>return new_n<EOL>
Update weighted average rate.  Param n is generic; it's how many of
whatever the caller is doing (rows, checksums, etc.).  Param s is how
long this n took, in seconds (hi-res or not).

Parameters:
    n - Number of operations (rows, etc.)
    t - Amount of time in seconds that n took

Returns:
    n adjusted to meet target_t based on weighted decaying avg rate