maloja/maloja/dev/profiler.py

35 lines
684 B
Python
Raw Normal View History

import os
import cProfile, pstats
from doreah.logging import log
from doreah.timing import Clock
from ..pkg_global.conf import data_dir
profiler = cProfile.Profile()
def profile(func):
def newfunc(*args,**kwargs):
benchmarkfolder = data_dir['logs']("benchmarks")
os.makedirs(benchmarkfolder,exist_ok=True)
clock = Clock()
clock.start()
profiler.enable()
result = func(*args,**kwargs)
profiler.disable()
2022-04-09 22:20:48 +03:00
2022-03-12 10:28:48 +03:00
log(f"Executed {func.__name__} ({args}, {kwargs}) in {clock.stop():.2f}s",module="debug_performance")
2022-03-06 04:58:02 +03:00
try:
pstats.Stats(profiler).dump_stats(os.path.join(benchmarkfolder,f"{func.__name__}.stats"))
2022-03-06 04:58:02 +03:00
except:
pass
2022-03-12 10:28:48 +03:00
return result
return newfunc