Notez que lorsque je voulais savoir où se trouvait le goulot d'étranglement parce que le script Python était lourd, j'oubliais toujours comment le profiler et le réexaminer.
Profiler est disponible en standard dans Python 3.
Python Profiler - Documentation Python 3
Il peut y avoir un profileur plus performant, mais cette fois je vais l'utiliser car le but est de le profiler rapidement.
$ python -m cProfile -o profile.stats myscript.py
Si `-o
myscript.py
import cProfile
import very_slow_function
cProfile.run('very_slow_function()', 'profile.stats')
Enveloppez le processus que vous souhaitez profiler avec cProfile.run
.
Si un nom de fichier est spécifié dans le deuxième argument, le résultat sera sorti dans un fichier au lieu d'être sorti vers la sortie standard.
Le fichier de résultat généré par cProfile est constitué de données binaires et ne peut pas être visualisé tel quel. Il peut être lu en utilisant le module standard pstats, mais je ne me souviens pas comment l'utiliser, donc cette fois je vais naviguer à l'aide d'un outil appelé cProfileV.
$ pip install cprofilev
Une fois installé, vous pouvez utiliser la commande cprofilev
.
$ cprofilev -f profile.stat
Si vous spécifiez le fichier de résultat avec l'option -f
et exécutez la commande cprofilev
, le serveur HTTP démarre, vous pouvez donc afficher les résultats du profilage en accédant à http: // localhost: 4000 / depuis votre navigateur.
C'est pratique car vous pouvez trier par le nombre d'exécutions et le temps d'exécution de chaque méthode.
Recommended Posts