1. #coding:utf-8 
  2. ''''' 
  3. python 对一个函数执行速度控制的演示,原理和 对网速控制比较类似,这里更简单 
  4. ''' 
  5. import time 
  6.  
  7. def RateLimited(maxsec): 
  8.     '速度控制修饰函数 
  9.     minInterval = 1.0 / float(maxsec) 
  10.     def decorate(func): 
  11.         #使用数组 记录上一次的时间,利用闭包还是蛮方便的 
  12.         lastTimeCalled = [0.0
  13.         def rateLimitedFunction(*args,**kargs): 
  14.             elapsed = time.time() - lastTimeCalled[0
  15.             #计算剩余时间 
  16.             leftToWait = minInterval - elapsed 
  17.             if leftToWait>0
  18.                 #时间未到先暂停一会 
  19.                 time.sleep(leftToWait) 
  20.             ret = func(*args,**kargs) 
  21.             #更新时间 
  22.             lastTimeCalled[0] = time.time() 
  23.             return ret 
  24.         return rateLimitedFunction 
  25.     return decorate 
  26.  
  27. @RateLimited(0.5)  # 每秒最多调用几次 
  28. def PrintNumber(num): 
  29.     print num 
  30.  
  31. if __name__ == "__main__"
  32.     print "打印1,2,3... 每2秒打印一个" 
  33.     for i in range(1,100): 
  34.         PrintNumber(i) 

 

参考:http://twistedmatrix.com/documents/current/core/examples/#auto3

http://stackoverflow.com/questions/667508/whats-a-good-rate-limiting-algorithm