Vérifiez le temps de traitement et le nombre d'appels pour chaque processus avec python (cProfile)

introduction

Lors de l'analyse des données, mon propre code est souvent lent. Il existe également une méthode de mesure du temps en utilisant la fonction de temps sur une base ad hoc, mais cette fois, je voudrais utiliser le profilage.

Facile à utiliser

  1. Accordez la commande cProfile à l'exécution
python -m cProfile -o Nom du fichier dans lequel écrire le profil.prof Nom du fichier pour lequel vous souhaitez mesurer le temps de traitement.py
  1. Créez du code pour regarder à l'intérieur du fichier prof
import pstats


if __name__ == "__main__":
    sts = pstats.Stats("hoge.prof")
    sts.strip_dirs().sort_stats("cumtime").print_stats(30)
  1. Exécutez le fichier py ci-dessus
Mon Jun 15 02:22:15 2020    hoge.prof

         415990 function calls (415842 primitive calls) in 0.742 seconds

   Ordered by: cumulative time
   List reduced from 350 to 30 due to restriction <30>

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
      7/1    0.000    0.000    0.742    0.742 {built-in method builtins.exec}
        1    0.000    0.000    0.742    0.742 hoge.py:1(<module>)
        1    0.052    0.052    0.734    0.734 hoge.py:54(main)
    13338    0.337    0.000    0.337    0.000 {built-in method builtins.print}
    13337    0.013    0.000    0.284    0.000 {built-in method strptime}
    13337    0.022    0.000    0.269    0.000 _strptime.py:574(_strptime_datetime)
    13337    0.136    0.000    0.248    0.000 _strptime.py:318(_strptime)
    13339    0.008    0.000    0.056    0.000 _strptime.py:26(_getlang)
    13339    0.010    0.000    0.048    0.000 locale.py:571(getlocale)
    13339    0.007    0.000    0.027    0.000 locale.py:467(_parse_localename)
    11983    0.019    0.000    0.023    0.000 hoge.py:41(nxt_hash)
    13339    0.014    0.000    0.020    0.000 locale.py:384(normalize)
    13337    0.020    0.000    0.020    0.000 {method 'match' of 're.Pattern' objects}
    13338    0.011    0.000    0.016    0.000 hoge.py:11(read_files)
    13337    0.013    0.000    0.013    0.000 {method 'groupdict' of 're.Match' objects}
    13339    0.011    0.000    0.011    0.000 {built-in method _locale.setlocale}
     11/4    0.000    0.000    0.010    0.002 <frozen importlib._bootstrap>:978(_find_and_load)
     11/4    0.000    0.000    0.010    0.002 <frozen importlib._bootstrap>:948(_find_and_load_unlocked)
     11/4    0.000    0.000    0.009    0.002 <frozen importlib._bootstrap>:663(_load_unlocked)
      6/4    0.000    0.000    0.009    0.002 <frozen importlib._bootstrap_external>:722(exec_module)
    13337    0.009    0.000    0.009    0.000 {method 'split' of 'str' objects}
    13337    0.008    0.000    0.008    0.000 {method 'format' of 'str' objects}
    40114    0.008    0.000    0.008    0.000 {method 'get' of 'dict' objects}
     16/4    0.000    0.000    0.008    0.002 <frozen importlib._bootstrap>:211(_call_with_frames_removed)
    26674    0.004    0.000    0.004    0.000 {method 'keys' of 'dict' objects}
    26675    0.004    0.000    0.004    0.000 {method 'toordinal' of 'datetime.date' objects}
    27406    0.004    0.000    0.004    0.000 {built-in method builtins.isinstance}
27111/27083    0.004    0.000    0.004    0.000 {built-in method builtins.len}
     2947    0.003    0.000    0.003    0.000 {method 'hexdigest' of '_hashlib.HASH' objects}
    13682    0.003    0.000    0.003    0.000 {method 'rstrip' of 'str' objects}

Arguments de sort_stats

Référence

Les arguments de print_stats sont listés jusqu'au K.

・ Ncalls: nombre d'appels -Tottime: Temps total passé sur la fonction d'intérêt (à l'exclusion de ce temps si un autre appel est effectué en interne) ・ Cumtime: temps de calcul avec appel interne de l'heure

Recommended Posts

Vérifiez le temps de traitement et le nombre d'appels pour chaque processus avec python (cProfile)
Vérifiez le fonctionnement de Python pour .NET dans chaque environnement
[Python] Mesure et affiche le temps nécessaire au traitement
traitement (python) Diagramme les coordonnées de la liste Spécifiez le nombre de fois dans draw ()
Obtenez le nombre d'occurrences pour chaque élément de la liste
Une fonction qui mesure le temps de traitement d'une méthode en python
Vérifiez le comportement du destroyer en Python
MongoDB avec Python pour la première fois
Statut de chaque système de traitement Python en 2020
Mettre le processus en veille pendant un certain temps (secondes) ou plus en Python
L'histoire du retour au front pour la première fois en 5 ans et de la refactorisation de Python Django
python> array> Déterminer le nombre et initialiser> mylist = [idx pour idx dans la plage (10)] / mylist = [0 pour idx dans la plage (10)] >> mylist = [0] * 10
Sortie du nombre de cœurs de processeur en Python
Afficher le résultat du traitement de la géométrie en Python
Traitement d'image? L'histoire du démarrage de Python pour
[IOS] Modifiez la durée d'affichage de chaque image de l'animation GIF dans Pythonista3.
Divise la chaîne de caractères par le nombre de caractères spécifié. En Ruby et Python.
Vérifiez si la chaîne est un nombre en python
Traitement pleine largeur et demi-largeur des données CSV en Python
Comment obtenir le nombre de chiffres en Python
Le processus d'installation d'Atom et de l'exécution de Python
Obtenir la taille (nombre d'éléments) de Union Find en Python
Vérifier l'existence de tables BigQuery en Java
Vérifiez la nature atrophique de la distribution de probabilité en Python
Récapitulatif du traitement de la date en Python (datetime et dateutil)
Sortie de la table spécifiée de la base de données Oracle en Python vers Excel pour chaque fichier
Comment compter le nombre d'occurrences de chaque élément de la liste en Python avec poids
Obtenez le nombre d'éléments spécifiques dans la liste python
Python --Trouvez le nombre de groupes dans l'expression regex
[Comprendre au plus court] Principes de base de Python pour l'analyse des données
[Homologie] Comptez le nombre de trous dans les données avec Python
[Python] Afficher le temps écoulé en heures, minutes et secondes (00:00:00)
Obtenez la date et l'heure actuelles en Python, en tenant compte du décalage horaire
Le processus de création et d'amélioration du code Python orienté objet
[Astuces] Problèmes et solutions dans le développement de python + kivy
Coordination de chaque processus dans MPI et mise en mémoire tampon de la sortie standard
Google recherche la chaîne sur la dernière ligne du fichier en Python
Obtenez l'index de chaque élément de la matrice de confusion en Python
L'histoire de la création d'un «espace de discussion sur l'esprit et le temps» exclusivement pour les ingénieurs de l'entreprise
Conseils aux débutants en Python pour utiliser l'exemple Scikit-image pour eux-mêmes 8 Mesure du temps de traitement et profileur
Rechercher les fuites de mémoire dans Python
Déterminez le format de la date et de l'heure avec Python et convertissez-le en Unixtime
L'histoire de Python et l'histoire de NaN
Rechercher des commandes externes avec python
J'ai comparé le temps de calcul de la moyenne mobile écrite en Python
Envelopper (partie de) la bibliothèque AtCoder en Cython pour une utilisation en Python
Vérifiez l'augmentation / la diminution des pièces de monnaie pour chaque adresse de la blockchain
[Python] Réduisons le nombre d'éléments dans le résultat dans le fonctionnement de l'ensemble
Comment vérifier la taille de la mémoire d'une variable en Python
Redimensionner automatiquement les captures d'écran de l'App Store pour chaque écran en Python
Comment vérifier la taille de la mémoire d'un dictionnaire en Python
Vérifiez et déplacez le répertoire en Python
L'histoire de la sortie d'un outil de vérification de texte créé par Python sur GitHub x CircleCI pour la première fois
Traiter le résultat de% time,% timeit
Dockerfile avec les bibliothèques nécessaires pour le traitement du langage naturel avec python
Voir python pour la première fois
python Remarque: map -faire la même chose pour chaque élément de la liste
for, continue, break Expliquer le flux du traitement itératif dans Python3-Part 1
Obtenez le titre et la date de livraison de Yahoo! News en Python
Essayez d'utiliser FireBase Cloud Firestore avec Python pour le moment
Obtenez le nombre de lecteurs d'articles sur Mendeley en Python