1 """
2 gather_profile_stats.py /path/to/dir/of/profiles
3
4 Note that the aggregated profiles must be read with pstats.Stats, not
5 hotshot.stats (the formats are incompatible)
6 """
7
8 from hotshot import stats
9 import pstats
10 import sys, os
11
13 profiles = {}
14 for f in os.listdir(p):
15 if f.endswith('.agg.prof'):
16 path = f[:-9]
17 prof = pstats.Stats(os.path.join(p, f))
18 elif f.endswith('.prof'):
19 bits = f.split('.')
20 path = ".".join(bits[:-3])
21 prof = stats.load(os.path.join(p, f))
22 else:
23 continue
24 print "Processing %s" % f
25 if path in profiles:
26 profiles[path].add(prof)
27 else:
28 profiles[path] = prof
29 os.unlink(os.path.join(p, f))
30 for (path, prof) in profiles.items():
31 prof.dump_stats(os.path.join(p, "%s.agg.prof" % path))
32
33 if __name__ == '__main__':
34 gather_stats(sys.argv[1])
35