mirror of
https://github.com/SickGear/SickGear.git
synced 2024-12-21 02:03:38 +00:00
33 lines
949 B
Python
33 lines
949 B
Python
|
from hotshot import Profile
|
||
|
from hotshot.stats import load as loadStats
|
||
|
from os import unlink
|
||
|
|
||
|
|
||
|
def runProfiler(func, args=tuple(), kw={}, verbose=True, nb_func=25,
|
||
|
sort_by=('cumulative', 'calls')):
|
||
|
profile_filename = "/tmp/profiler"
|
||
|
prof = Profile(profile_filename)
|
||
|
try:
|
||
|
if verbose:
|
||
|
print("[+] Run profiler")
|
||
|
result = prof.runcall(func, *args, **kw)
|
||
|
prof.close()
|
||
|
if verbose:
|
||
|
print("[+] Stop profiler")
|
||
|
print("[+] Process data...")
|
||
|
stat = loadStats(profile_filename)
|
||
|
if verbose:
|
||
|
print("[+] Strip...")
|
||
|
stat.strip_dirs()
|
||
|
if verbose:
|
||
|
print("[+] Sort data...")
|
||
|
stat.sort_stats(*sort_by)
|
||
|
if verbose:
|
||
|
print()
|
||
|
print("[+] Display statistics")
|
||
|
print()
|
||
|
stat.print_stats(nb_func)
|
||
|
return result
|
||
|
finally:
|
||
|
unlink(profile_filename)
|