Vous pouvez utiliser Decorator pour ajouter un traitement avant et après l'exécution d'une fonction.
Une fois que vous avez défini la fonction de décorateur, vous pouvez ajouter un traitement en écrivant simplement le nom de la fonction @ avant la fonction que vous souhaitez décorer, ce qui est pratique lorsque vous souhaitez écrire un grand nombre de fonctions partiellement différentes ou ajouter un peu de traitement.
Ci-dessous, la fonction décoratrice check_execution_time () qui mesure le temps d'exécution de la fonction est définie, et la fonction test () appropriée est décorée.
python
import time
def check_execution_time(func): #func est une cible de décoration
def wrapper(*args, **kwargs): #L'argument de la cible décorer va ici
time1 = time.time() #Temps avant l'exécution
res = func(*args, **kwargs) #Exécutez la fonction reçue ici
time2 = time.time() #Temps après l'exécution
erapsed_time = time2 - time1 #Calculer le temps d'exécution
return res, erapsed_time #Renvoie le résultat de l'exécution
return wrapper
@check_execution_time #Décorateur de décor
def test(n): #Fonctions à décorer
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
Essayons!
Recommended Posts