| #!/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]) |