mirror of
https://github.com/moparisthebest/SickRage
synced 2024-12-14 20:12:19 -05:00
32 lines
923 B
Python
32 lines
923 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)
|
||
|
|