Wenn Sie eine Bibliothek mit einer angemessenen Größe schreiben, ist es schwierig, das Skript über die Befehlszeile auszuführen und jedes Mal, wenn Sie ein Profil erstellen, setUp und tearDown von unittest zu schreiben. Erstellen Sie daher einen Dekorateur.
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
Es können nur bestimmte Funktionen und Methoden ermittelt werden. Kommentieren Sie den Dekorateur aus, wenn Sie das Profil deaktivieren möchten. Natürlich können Sie es auch verwenden, wenn Sie nur eine bestimmte Testmethode mit unittest profilieren möchten.
func.py
from d_profile import profile
@profile
def hoge(a, b):
return a * b
Recommended Posts