Bonjour,
Je suis nouveau ici, je salue tout le monde !
Je suis en train de coder un petit logiciel qui permet de résoudre un petit jeu suivant des règles simples. Le but est de prendre en main Python, me confronter à des problèmes réels, les résoudre, etc... le logiciel en soi n'est pas très utile...
Voilà l'objet de ma question :
Le logiciel doit effectuer des milliers de fois quelques instructions (surtout des if) pour atteindre la solution optimale du jeu, c'est long, très long même sur certains tableaux. En fait chaque itération est plus longue que la précédente (pour simplifier, l'itération 1 fait 36 fois l'opération, l'itération 2 : 36x36, l'itération 3 : 36^3,..., l'itération n : 36^n...) or pour certains tableaux il faudrait sûrement atteindre l'itération 10 pour le résoudre de façon optimale !!
J'ai déjà réussi à optimiser et à diviser le temps de calcul par 20 (oui, mon code était vraiment brut au départ !) mais j'aimerai voir jusqu'où on pourrait arriver (sachant que ce n'est pas vraiment vital... mais c'est sûrement très instructif).
Pour l'instant j'atteins la fin l'itération 3 en environ 1 seconde, et la fin de l'itération 4 une 100ène de secondes... je n'ai jamais essayé d'aller jusqu'à la fin de l'itération 5...
Pour l'instant pour trouver les morceaux de code qui prennent le plus de temps j'utilise en gros ceci :
import time as origtime
[...]
debut = origtime.time()
....mon bout de code...
temps = origtime.time()-debut
ça fonctionnait à peu près bien pour des gros bouts de code mais maintenant que je rentre dans le détail j'arrive à la limite du système (le temps que met python à enregistrer le temps devient non négligeable devant le temps d'exécution du bout de code lui même !). Et en plus ça devient pas terrible à gérer, des appels de calcul du temps un peu partout, etc...
Ma question est donc :Existe-t-il des outils permettant d'analyser l'exécution d'un code python pour en extraire certaines données comme les temps d'exécution de chaque instruction, le nombre de fois qu'elles sont exécutés, etc... ?
Question subsidiaire :comment faire pour que le programme ne freeze pas pendant le calcul ? J'aimerai animer une petite barre de progression et aussi permettre d'interrompre le calcul autrement que par un Ctrl+C...
Merci pour tout !
PS : le programme est graphique et utilise pyGTK, je suis sous linux, j'utilise python 2.5.2