cprofile et Python: Trouver le numéro de ligne spécifique que le code passe le plus clair du temps sur

voix
5

J'utilise cprofile, pstats et Gprof2dot au profil un script python assez long.

Les résultats me disent que le plus de temps est consacré à appeler une méthode dans un objet que je l'ai défini. Cependant, ce que je voudrais vraiment est de savoir exactement ce que le numéro de ligne dans cette fonction est en train de manger le temps.

Toute idée comment obtenir ces informations supplémentaires?

(Soit dit en passant, je suis en utilisant Python 2.6 sur Mac OS X Snow Leopard si cela aide ...)

Créé 30/09/2009 à 21:46
source utilisateur
Dans d'autres langues...                            


3 réponses

voix
3

Il y a un profileur de ligne en python écrit par Robert Kern.

Créé 01/10/2009 à 07:25
source utilisateur

voix
2

cProfilene détecte pas les numéros de ligne au sein d'une fonction; il ne suit que le numéro de ligne où la fonction a été définie.

cProfiletente de reproduire le comportement de profile(qui est python pur). profileutilise pstatspour stocker les données de fonctionnement et des pstatsnuméros de ligne stocke les définitions de fonction, et non pour les états Python individuels.

Si vous avez besoin de comprendre avec une granularité plus fine ce qui est en train de manger tout votre temps, alors vous devez factoriser votre grande fonction dans plusieurs fonctions, plus petites.

Créé 30/09/2009 à 22:42
source utilisateur

voix
1

Supposons que la quantité de temps étant « mangé » est un nombre, comme 40%. Ensuite, si vous interrompre le programme ou le mettre en pause à un moment aléatoire, la probabilité est de 40% que vous le verrez, exposé avec précision sur la pile d'appel. Pour ce faire, 10 fois, et sur 4 échantillons, +/-, vous le verrez.

Cela explique pourquoi cela fonctionne. Ceci est un exemple.

Créé 30/09/2009 à 22:36
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more