Quelle est la différence entre tottime et cumtime dans un script python profilé avec cProfile?
Je Profile un script python main.py
utiliser cProfile avec la commande suivante:
python -m cProfile -s tottime main.py
La sortie-je obtenir de l'est (seule copie-collé les lignes du haut de la sortie):
10184337 function calls (10181667 primitive calls) in 13.597 seconds
Ordered by: internal time
ncalls tottime percall cumtime percall filename:lineno(function)
1 4.674 4.674 13.598 13.598 main.py:2(<module>)
2142 2.964 0.001 4.663 0.002 load_aerdat3.py:61(getPacket)
459 2.381 0.005 2.381 0.005 {waitKey}
1667989 1.170 0.000 1.170 0.000 {numpy.core.multiarray.array}
...
Comment tottime
(4.674) être différent de l' cumtime
(13.598) pour main.py
, puisque cette fonction (c'est à dire. le script entier) n'est appelé qu'une seule fois?
1 réponses
tottime
est le temps total passé à dans la fonction. cumtime
est le temps total passé dans la fonction les plus toutes les fonctions appelées par cette fonction.
Les deux valeurs est le même si une fonction n'appelle jamais rien d'autre. Par exemple, {waitKey}
ne semble pas invoquer d'autre chose:
459 2.381 0.005 2.381 0.005 {waitKey}
mais getPacket()
appelle d'autres fonctions, donc c'est cumtime
colonne comprend le temps pour ceux appels:
2142 2.964 0.001 4.663 0.002 load_aerdat3.py:61(getPacket)
main.py
la ligne couvre tout le code exécuté en dehors des fonctions, le code global; juste les instructions à ce niveau ont pris 4.674 secondes à exécuter, mais parce que ces instructions appelaient les autres fonctions, le temps total cumulé de main.py
code plus tous les appels de fonction effectués est de 13.598 secondes.
tottime
le temps total passé dans la fonction donnée (et en excluant le temps fait des appels à des sous-fonctions)[...]
cumtime
est le temps cumulé passé dans cette fonction et dans toutes les sous-fonctions (de l'invocation jusqu'à la sortie). Ce chiffre est exact même pour les fonctions récursives.