Soutenez-nous

FAQ pythonConsultez toutes les FAQ

Nombre d'auteurs : 11, nombre de questions : 188, dernière mise à jour : 23 mai 2009  Ajouter une question

 

Cette FAQ a été réalisée à partir des questions posées sur le forum Python complétées par d'autres questions qui pouvaient nous sembler intéressantes de traiter. Toutefois il se peut que les réponses apportées contiennent des erreurs, imprécisions ... Vous pouvez dans ce cas contacter un des membres de la rédaction pour lui faire part de vos remarques.

L'équipe Python de Developpez.


SommaireOptimisation (2)
précédent sommaire suivant
 

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:

Code python :



1
2
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)

Mis à jour le 16 juin 2005 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.

Code python :



1
2
3
4
5
6
7
8
9
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

Code python :



1
2
3
4
5
6
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.

Code python :



1
2
3
4
5
6
7
8
9
10
11
12
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))

Mis à jour le 9 décembre 2008 Guigui_

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

Proposer une nouvelle question/réponse à la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse

Liens sous la question
précédent sommaire suivant
 

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 © 2014 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et 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.

 
 
 
 
Partenaires

PlanetHoster
Ikoula