Python timeit() : mesurer le temps d'exécution avec exemples pratiques
Python timeit() : mesurer le temps d'exécution avec exemples pratiques
Qu'est-ce que Python timeit() ?
Python timeit() est un module intégré conçu pour mesurer le temps d'exécution de petits extraits de code avec une haute précision. Par défaut, il exécute l'instruction un million de fois et rapporte l'exécution la plus rapide, ce qui aide à comparer les performances de différentes implémentations.
Syntaxe
timeit.timeit(stmt, setup, timer, number)
Paramètres
- stmt – Le code à chronométrer. Par défaut
pass. - setup – Code qui s'exécute une fois avant
stmt. Par défautpass. - timer – Fonction de minuteur optionnelle. Le module fournit un défaut approprié.
- number – Combien de fois
stmtest exécuté. Par défaut 1 000 000.
Importez le module d'abord :
import timeit
Exemple 1 – Chronométrer une expression simple
# Tester une opération arithmétique de base
import timeit
print(timeit.timeit("output = 10*5"))
Sortie typique :
0.06127880399999999
Ceci montre le temps (en secondes) pris pour la plus rapide des un million d'exécutions.
Chronométrer plusieurs lignes
timeit peut gérer du code multi-lignes en séparant les instructions par des points-virgules ou en passant une chaîne triple-quotée.
En utilisant des points-virgules
import timeit
print("Le temps pris est ", timeit.timeit(stmt="a=10;b=10;sum=a+b"))
Sortie :
Le temps pris est 0.137031482
En utilisant des chaînes triple-quotées
import timeit
import_module = "import random"
testcode = '''
def test():
return random.randint(10, 100)
'''
print(timeit.repeat(stmt=testcode, setup=import_module))
Sortie :
C:\pythontest>python testtimeit.py Le temps pris est 0.182619178
Méthodes clés
- timeit.default_timer() – Renvoie l'heure actuelle avec la meilleure résolution disponible.
- timeit.repeat(stmt, setup, timer, repeat, number) – Exécute
timeit() répétitivement, renvoyant une liste des meilleurs temps pour chaque exécution.
Exemple 1 – Utiliser timeit.timeit()
# Tester une fonction qui renvoie un entier aléatoire
import timeit
import_module = "import random"
testcode = '''
def test():
return random.randint(10, 100)
'''
print(timeit.timeit(stmt=testcode, setup=import_module))
Sortie :
0.46715912400000004
Exemple 2 – Utiliser default_timer()
# Mesurer un seul appel de fonction
import timeit
import random
def test():
return random.randint(10, 100)
starttime = timeit.default_timer()
print("L'heure de début est :", starttime)
test()
print("La différence de temps est :", timeit.default_timer() - starttime)
Sortie :
L'heure de début est : 0.220261875 La différence de temps est : 0.0004737320000000045
Exemple 3 – Utiliser timeit.repeat()
# Exécuter le test cinq fois et capturer les meilleurs temps
import timeit
import_module = "import random"
testcode = '''
def test():
return random.randint(10, 100)
'''
print(timeit.repeat(stmt=testcode, setup=import_module, repeat=5))
Sortie :
[0.43638873, 0.5040939680000001, 0.5069179909999999, 0.3943449330000002, 0.3546886979999999]
Chaque entrée est le meilleur temps pour une itération des 1 000 000 exécutions.
Utilisation en ligne de commande
Vous pouvez invoquer timeit directement depuis le shell :
python -m timeit [-n N] [-r N] [-s S] [-t] [-c] [-h] [code statement ...]
-n N– Nombre de boucles pour l'instruction.-r N– Combien de fois le processus de chronométrage entier se répète.-s S– Code de configuration exécuté une fois avant le chronométrage.-t– Utilisertime.time()comme minuteur.-c– Utilisertime.clock()comme minuteur.-h– Afficher l'aide.
Exemple
C:\pythontest>python -m timeit -s 'text="hello world"' 20000000 loops, best of 5: 13.1 nsec per loop
Une autre façon pratique est d'appeler timeit depuis le REPL :
import timeit
print("Le temps pris est ", timeit.timeit(stmt="a=10;b=10;sum=a+b"))
Sortie :
Le temps pris est 0.15048536300000137
Pourquoi timeit() est le meilleur outil pour chronométrer du code Python
- Il exécute l'instruction de nombreuses fois (défaut 1 000 000) et renvoie l'exécution la plus rapide, donnant une estimation fiable.
- La collecte des ordures est désactivée pendant le chronométrage, l'empêchant de fausser les résultats.
- Il sélectionne automatiquement le minuteur le plus précis pour votre système d'exploitation (ex. :
time.clock()sur Windows,time.time()sur macOS/Linux).
Résumé
Le module timeit est essentiel pour benchmarker de courts extraits Python. Ses paramètres sont simples :
- stmt – Code à chronométrer.
- setup – Code de configuration unique.
- timer – Fonction de minuteur optionnelle.
- number – Combien de fois
stmts'exécute.
Assurez-vous d'utiliser timeit pour des mesures précises et reproductibles.
Python
- Python : Récupérer l'heure actuelle et les données de fuseau horaire facilement
- Maîtriser str.count() de Python : Compter caractères et sous-chaînes avec exemples
- Maîtriser les chaînes format() en Python avec exemples clairs
- Maîtriser la méthode String.find() de Python : Syntaxe, Exemples et Alternatives
- Maîtriser les fonctions lambda Python : exemples pratiques et bonnes pratiques
- Fonction Python round() expliquée avec exemples pratiques
- Maîtriser la fonction Python map() : syntaxe, exemples et bonnes pratiques
- Python Counter dans collections : comptage efficace, mise à jour et opérations arithmétiques
- Comprendre type() et isinstance() en Python : exemples pratiques