You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
977 B
36 lines
977 B
#!/usr/bin/env python |
|
|
|
""" |
|
gather_profile_stats.py /path/to/dir/of/profiles |
|
|
|
Note that the aggregated profiles must be read with pstats.Stats, not |
|
hotshot.stats (the formats are incompatible) |
|
""" |
|
|
|
from hotshot import stats |
|
import pstats |
|
import sys, os |
|
|
|
def gather_stats(p): |
|
profiles = {} |
|
for f in os.listdir(p): |
|
if f.endswith('.agg.prof'): |
|
path = f[:-9] |
|
prof = pstats.Stats(os.path.join(p, f)) |
|
elif f.endswith('.prof'): |
|
bits = f.split('.') |
|
path = ".".join(bits[:-3]) |
|
prof = stats.load(os.path.join(p, f)) |
|
else: |
|
continue |
|
print "Processing %s" % f |
|
if path in profiles: |
|
profiles[path].add(prof) |
|
else: |
|
profiles[path] = prof |
|
os.unlink(os.path.join(p, f)) |
|
for (path, prof) in profiles.items(): |
|
prof.dump_stats(os.path.join(p, "%s.agg.prof" % path)) |
|
|
|
if __name__ == '__main__': |
|
gather_stats(sys.argv[1])
|
|
|