Mit Decorator können Sie die Verarbeitung vor und nach der Ausführung einer Funktion hinzufügen.
Sobald Sie die Dekorationsfunktion definiert haben, können Sie die Verarbeitung hinzufügen, indem Sie den @ Funktionsnamen vor die zu dekorierende Funktion schreiben. Dies ist praktisch, wenn Sie viele teilweise unterschiedliche Funktionen schreiben oder eine kleine Verarbeitung hinzufügen möchten.
Im Folgenden wird die Dekorationsfunktion check_execution_time () definiert, die die Ausführungszeit der Funktion misst, und der entsprechende Funktionstest () wird dekoriert.
python
import time
def check_execution_time(func): #func ist ein dekorationsziel
def wrapper(*args, **kwargs): #Das Argument zum Dekorationsziel geht hier
time1 = time.time() #Zeit vor der Ausführung
res = func(*args, **kwargs) #Führen Sie die hier empfangene Funktion aus
time2 = time.time() #Zeit nach der Ausführung
erapsed_time = time2 - time1 #Berechnen Sie die Ausführungszeit
return res, erapsed_time #Gibt das Ausführungsergebnis zurück
return wrapper
@check_execution_time #Set Dekorateur
def test(n): #Zu dekorierende Funktionen
sum_n = 0
for k in range(n):
sum_n += k
return sum_n
sum_n, erapsed_time = test(1000000)
print('sum_k: %d' % sum_n)
print('erapsed_time: %1.3f' % erapsed_time)
output
sum_k: 499999500000
erapsed_time: 0.052
Lass es uns versuchen!
Recommended Posts