• Mémo Décorateur Python - Mesurer le temps d'exécution d'une fonction

  • “Le debug est le temps vécu de la conscience” (Henri Bergson)

Le décorateur est une fonction très utile en Python, permettant de faire de la métaprogrammation. C'est une fonction qui joue le rôle de modifiant d'une autre fonction (modifié).

Celui-ci permet de mesurer d'une manière assez peu avancée le temps d'exécution d'une fonction. Il exécute la fonction entre deux timestamps et renvoie la différence entre les deux.

import functools
import time


def time_it(func):
    """Timestamp decorator for dedicated functions"""
    @functools.wraps(func)
    def wrapper(*args, **kwargs):
        start = time.time()                 
        result = func(*args, **kwargs)
        elapsed = time.time() - start
        mlsec = repr(elapsed).split('.')[1][:3]
        readable = time.strftime("%H:%M:%S.{}".format(mlsec), time.gmtime(elapsed))
        print('Function "{}": {} sec'.format(func.__name__, readable))
        return result
    return wrapper


@time_it
def test():
    time.sleep(5)
    print("Coucou, ceci est la fonction décorée")

test()

En sortie:

Coucou, ceci est la fonction décorée.
Func "test": 00:00:05.003 sec


16 novembre 2018 14:23