Heim  >  Artikel  >  Backend-Entwicklung  >  Python begrenzt die Anzahl der Funktionsaufrufe

Python begrenzt die Anzahl der Funktionsaufrufe

不言
不言Original
2018-04-21 14:33:233317Durchsuche

Das Folgende ist ein Beispiel dafür, wie die Anzahl der Funktionsaufrufe in Python begrenzt werden kann. Es hat einen guten Referenzwert und ich hoffe, dass es für alle hilfreich ist. Werfen wir gemeinsam einen Blick darauf

Der folgende Code begrenzt die Anzahl der Aufrufe einer bestimmten Funktion in einem bestimmten Zeitraum,

Inspirationsquelle: Python Decorator – Methode zur Begrenzung der Anzahl der Funktionen Anrufe (alle 10 Sekunden einmal anrufen) Willkommen bei Besuch

Der ursprüngliche Blog gibt Caching an, ich habe es hier geändert, um die Anzahl der Besuche zu begrenzen, es ist das Gleiche

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

Verwandte Empfehlungen:

Pythons Methode zur Verwendung von Dekoratoren und Threads, um die Funktionsausführung einzuschränken Zeit


Das obige ist der detaillierte Inhalt vonPython begrenzt die Anzahl der Funktionsaufrufe. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn