[PYTHON] Créez facilement un profil avec un décorateur

Si vous écrivez une bibliothèque d'une taille raisonnable, il sera difficile d'exécuter le script à partir de la ligne de commande et d'écrire setUp et tearDown de unittest à chaque fois que vous créez un profil, alors créez un décorateur.

d_profile.py



import cProfile
import pstats


def profile(func):
    def _f(*args, **kwargs):
        pr = cProfile.Profile()
        pr.enable()
        print("\n<<<---")
        res = func(*args, **kwargs)
        p = pstats.Stats(pr)
        p.strip_dirs().sort_stats('cumtime').print_stats(20)
        print("\n--->>>")
        return res
    return _f

Seules des fonctions et méthodes spécifiques peuvent être identifiées. Commentez le décorateur si vous souhaitez désactiver le profil. Bien sûr, vous pouvez également l'utiliser lorsque vous souhaitez profiler uniquement une méthode de test spécifique avec unittest.

func.py



from d_profile import profile

@profile
def hoge(a, b):
    return a * b

Recommended Posts

Créez facilement un profil avec un décorateur
Décorer avec un décorateur
Dessinez facilement une carte avec matplotlib.basemap
Créer un décorateur de fonction Python avec Class
Créez facilement un environnement de développement avec Laragon
Vous pouvez facilement créer une interface graphique même avec Python
Facile à créer une application console Python avec Click
Facilement démonisé avec Supervisor
Format A4 avec python-pptx
Faire un décorateur de fonction
Faites facilement un bip avec python
Pourquoi ne pas créer facilement une table élégante avec Python?
Apprenez librosa avec un tutoriel 1
Facilement sans serveur avec Python en utilisant Calice
Dessinez un graphique avec NetworkX
Essayez de programmer avec un shell!
Écrivez facilement if-elif avec lambda
Créer une page d'accueil avec django
Utiliser une imprimante avec Debian 10
Faites une loterie avec Python
Créer une interface graphique aussi facilement que possible avec python [édition tkinter]
Tornado - Créons une API Web qui renvoie facilement JSON avec JSON
Créer un répertoire avec python
Un peu coincé dans le chainer
Dessinez un graphique avec networkx
Faire un feu avec kdeplot
Créez facilement un modèle de traitement du langage naturel avec BERT + LightGBM + optuna
Créer un environnement Kubernetes avec Ansible 2
[Python] Qu'est-ce qu'une instruction with?
Résoudre ABC163 A ~ C avec Python
Manuel de graphisme Python avec Matplotlib.
Jouez avec une tortue avec des graphiques de tortue (partie 1)
Tracez un graphe avec Julia + PyQtGraph (2)
Générer une distribution normale avec SciPy
Créer un arbre déterminé avec scikit-learn
Faisons une interface graphique avec python.
Faites un son avec le notebook Jupyter
Énumérer les fichiers avec des extensions spécifiques
Créer un serveur Flask avec Docker
Créer un fichier deb avec Docker
Implémentez facilement des sous-commandes avec python click
Gérez facilement les listes avec python + sqlite3
Dessinez un graphique lâche avec matplotlib
Déployer l'application Django avec Docker
Faisons une rupture de bloc avec wxPython
Créez un environnement virtuel avec Python!
J'ai fait une loterie avec Python.
Dessinez un beau cercle avec numpy
Changez facilement de virtualenv Pyenv avec peco
Ecrire un réseau résiduel avec TFLearn
Django Tips-Créez un site de classement avec Django-
Tracez un graphique avec Julia + PyQtGraph (1)
Créer un environnement virtuel avec Python 3
Dessinez un graphique avec Julia + PyQtGraph (3)
Résoudre ABC168 A ~ C avec Python
Réalisez une file d'attente avec deux piles
Créer un système de recommandation avec python
Créer une application Web avec Django
Générer une URL pré-signée avec golang