ホームページ  >  記事  >  バックエンド開発  >  Python は関数呼び出しの数を制限します

Python は関数呼び出しの数を制限します

不言
不言オリジナル
2018-04-21 14:33:233343ブラウズ

以下は Python で関数呼び出しの数を制限する方法の例です。これは良い参考値であり、皆さんの役に立つことを願っています。一緒に見てみましょう

次のコードは、一定期間内の特定の関数の呼び出し数を制限します

インスピレーション源: Python デコレーター - 関数呼び出しの数を制限するメソッド (10 秒に 1 回呼び出します) ) ようこそ

オリジナルブログへ キャッシュを指定しており、ここでアクセス数を制限するように変更しましたが、結果は同じです

#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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。