FAQ PythonConsultez toutes les FAQ

Nombre d'auteurs : 11, nombre de questions : 188, dernière mise à jour : 2 septembre 2018 

 
OuvrirSommaireOptimisation

La bibliothèque Psyco permet une compilation dynamique en C de vos programmes sans modification de vos sources. Il suffira d'ajouter les lignes suivantes au début de chacun de vos fichiers sources:

 
Sélectionnez

try: import psyco; psyco.full() 
except: pass

Il peut cependant y avoir des interférences avec des modules de déboggage (le profiler par exemple)

Créé le 16 juin 2005  par Guigui_

Pour mesurer le temps d'exécution d'une portion de code, il suffit simplement d'utiliser la fonction time.clock() qui renvoie le temps CPU en secondes. La différence entre 2 de ces différents temps donnera le temps d'éxécution de la portion de code encadrée.

 
Sélectionnez

import time

l = range(100000)

tps1 = time.clock()
random.shuffle(l)
l.sort()
tps2 = time.clock()
print(tps2 - tps1)

Si vous n'avez pas besoin d'une précision très importante, l'usage de time.clock suffira amplement. Sinon optez pour le module timeit.
Ce module propose principalement la création d'un objet timeit.Timer([stmt='pass'[, setup='pass'[, timer=<timer function>]]])stmt est la portion de code sous forme d'une chaîne de caractères qui va être évaluée, setup représente (toujours sous forme d'une chaîne de caractères), les conditions d'initialisation. Ces 2 paramètres peuvent également être des objets qui sont appelable sans arguments.

Cet objet possède 2 méthodes Timer.timeit([number=1000000]) et Timer.repeat([repeat=3[, number=1000000]]).
La première fonction retourne le temps total des instructions exécutées number fois.
La deuxième reproduit l'expérience de la première repeat fois. Le temps à considérer sera alors le minimum des temps obtenus

 
Sélectionnez

import timeit
import random

test1 = timeit.Timer("random.shuffle(l);l.sort()", "import random;l = range(100000)")
print(test1.timeit(10))
print(test1.repeat(5, 10))

Il faut bien faire attention à la validation des données en sachant que la condition setup n'est exécutée qu'une seule fois au tout début. C'est pourquoi il peut être aussi bien de travailler directement sur l'appel d'une fonction qui initialisera elle-même les paramètres à chaque exécution. Dans ce cas-là, le paramètre setup contient simplement l'importation de la fonction étudiée.
Autrement, il suffit de prendre comme paramètre stmt directement la fonction étudiée sous forme d'objet.

 
Sélectionnez

def sort():
    l = range(100000)
    random.shuffle(l)
    l.sort()

test2 = timeit.Timer("sort()", "from __main__ import sort")
print(test2.timeit(10))
print(test2.repeat(3, 10))

test3 = timeit.Timer(sort)
print(test3.timeit(10))
print(test3.repeat(3, 10))
Créé le 9 décembre 2008  par Guigui_

Lien : Python Library Reference: timeit — Measure execution time of small code snippets

  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2005-2009 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.