salut,
je programme un petit logiciel qui effectue une classification
de certains fichiers. J´aimerai qu´à la fin le logiciel me
donne le temps qu´il a mis pour effectuer la classification....
Quelqu´un pourrait avoir une idée sur la chose?
S. Bugsy








salut,
je programme un petit logiciel qui effectue une classification
de certains fichiers. J´aimerai qu´à la fin le logiciel me
donne le temps qu´il a mis pour effectuer la classification....
Quelqu´un pourrait avoir une idée sur la chose?
S. Bugsy
Bonjour,
Tu peux utiliser time.clock()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 import time t = time.clock() #effectue la classification.... duree = time.clock() - t
Si c'est pour des tests, tu seras sans doute intéressé par profile (et plus spécialement cProfile).
Aussi, si tu es sous un système *nix, tu peux utiliser la commande time
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 ~ $ time sleep 10 real 0m10.001s user 0m0.000s sys 0m0.000s








Si les deux pc n'ont pas précisément le même matériel, la différence est là.
Et même si c'était le cas, il n'y a aucune assurance que ça prendrait précisément le même temps.
Sans compter que ça dépend aussi de la charge mémoire, des paramètres de Python etc etc etc...








bonjour,
oui, bien sûr il existe plein de méthodes pour diminuer les temps de restitutions.
avant toute chose il faut savoir où est ton goulet d'étranglement. là je te suggère de regarder du côté des modules profile ou Cprofile dans la librairie standard de python.
une fois que tu as trouvé les goulets, tu peux essayer de modifier très localement la fonction incriminée si jamais tu as utilisé des fonctionnalités très gourmandes de python (méthode index des listes par exemple, ou encore range qu'on peut remplacer par xrange...)
si la lenteur vient d'un choix d'architecture dépassant le cadre de la fonction, c'est un peu plus long comme travail, forcément.
et puis en dernier recours tu as la possibilité de construire une extension dans un autre langage en utilisant les vastes possibilités offertes par python pour de l'interopérabilité de langage, ou utiliser pyrex/cython, passer par l'API C de Python... enfin bref, c'est pas le choix qui manque![]()
Tu peux te servir de psyco aussiCa c'est de l'optimisation avec zero boulot.








Kango mer6 pr la suggestion...je vais d´abord essayer l´optimisation avec psyco..Mais après installation du module, lorsque je l´importe,l´erreur suivant apparait:
Est ce un problème d´incompatibilité????
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Traceback (most recent call last): File "<pyshell#1>", line 1, in <module> import psyco File "C:\Python26\lib\site-packages\psyco\__init__.py", line 46, in <module> raise ImportError, str(e) + extramsg ImportError: No module named _psyco (cannot locate the compiled extension '_psyco.pyd' in the package path 'C:\Python26\lib\site-packages\psyco')
Suis quand même la suggestion d'Antoine concernant Cprofile, psyco fonctionne vraiment bien sur des fonctions avec du calcul mathématique, il marche bien aussi ailleurs, mais il marchera encore mieux si tu optimise déjà ton algorithme (localement ou globalement).
Edit : Psyco est un module non standard, il faut donc aller le télécharger depuis le net![]()
















7tait un problème d´incompatibilité...voici le lien pour la version psyco compatible avec python2.6
http://www.voidspace.org.uk/python/modules.shtml#psyco
Partager