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.
37 lines
977 B
37 lines
977 B
|
13 years ago
|
#!/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])
|