Maison  >  Article  >  développement back-end  >  Python limite le nombre d'appels de fonctions

Python limite le nombre d'appels de fonctions

不言
不言original
2018-04-21 14:33:233273parcourir

Ce qui suit est un exemple de la façon de limiter le nombre d'appels de fonction en python. Il a une bonne valeur de référence et j'espère qu'il sera utile à tout le monde. Jetons un coup d'oeil ensemble

Le code suivant limite le nombre d'appels à une certaine fonction dans une certaine période de temps,

Source d'inspiration : python decorator - méthode pour limiter le nombre de fonctions appels (appel une fois toutes les 10 secondes) Bienvenue pour visiter

Le blog d'origine précise la mise en cache, je l'ai changé pour limiter le nombre de visites ici, c'est la même chose

#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()

Recommandations associées :

Méthode Python consistant à utiliser des décorateurs et des threads pour limiter l'exécution de fonctions heure


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn