下面為大家分享一篇python 限制函數調用次數的執行個體講解,具有很好的參考價值,希望對大家有所協助。一起過來看看吧
如下代碼,限制某個函數在某個時間段的調用次數,
靈感來源:python裝飾器-限制函數調用次數的方法(10s調用一次) 歡迎訪問
原部落格中指定的是緩衝,我這裡換成限制訪問次數,異曲同工
#newtest.py#!/usr/bin/env python#-*- coding:utf-8 -*-import timedef stat_called_time(func): cache={} limit_times=[10] def _called_time(*args,**kwargs): key=func.__name__ if key in cache.keys(): [call_times,updatetime]=cache[key] if time.time()-updatetime <60: cache[key][0]+=1 else: cache[key]=[1,time.time()] else: call_times=1 cache[key]=[call_times,time.time()] print('調用次數: %s' % cache[key][0]) print('限制次數: %s' % limit_times[0]) if cache[key][0] <= limit_times[0]: res=func(*args,**kwargs) cache[key][1] = time.time() return res else: print("超過調用次數了") return None return _called_time@stat_called_timedef foo(): print("I'm foo")if __name__=='__main__': for i in range(10): foo()
#test.pyfrom newtest import fooimport timefor i in range(30): foo()print('*'*20)foo()foo()print('*'*20)for i in range(60): print(i) time.sleep(1)for i in range(11): foo()