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