首頁 >後端開發 >Python教學 >python 限制函數呼叫次數

python 限制函數呼叫次數

不言
不言原創
2018-04-21 14:33:233373瀏覽

下面為大家分享一篇python 限制函數呼叫次數的實例講解,具有很好的參考價值,希望對大家有幫助。一起來看看吧

如下程式碼,限制某個函數在某個時間段的呼叫次數,

靈感來源:python裝飾器-限制函數呼叫次數的方法(10s呼叫一次) 歡迎訪問

原始部落格中指定的是緩存,我這裡換成限制訪問次數,異曲同工

##

#newtest.py
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import time
def 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(&#39;调用次数: %s&#39; % cache[key][0])
  print(&#39;限制次数: %s&#39; % 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_time
def foo():
 print("I&#39;m foo")
if __name__==&#39;__main__&#39;:
 for i in range(10):
  foo()

#test.py
from newtest import foo
import time
for i in range(30):
 foo()
print(&#39;*&#39;*20)
foo()
foo()
print(&#39;*&#39;*20)
for i in range(60):
 print(i)
 time.sleep(1)
for i in range(11):
 foo()

相關推薦:


python使用裝飾器和執行緒限制函數執行時間的方法


以上是python 限制函數呼叫次數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn