code: def update(self, n, t):
          
          if self.avg_n and self.avg_t:
              self.avg_n = (self.avg_n * self.weight) + n
              self.avg_t = (self.avg_t * self.weight) + t
          else:
              self.avg_n = n
              self.avg_t = t
  
          new_n = int(self.avg_rate * self.target_t)
          return new_n
docs: 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