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