annotate Tools/scripts/hotshotmain.py @ 79675:c0a2294de787 2.7

Issue #16199: Backport 2to3 typo fix from 3.2.
author Chris Jerdonek <chris.jerdonek@gmail.com>
date Thu, 11 Oct 2012 16:15:46 -0700
parents 95744a4208a2
children ac192f89c109
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
31428
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
1 #!/usr/bin/env python
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
2 # -*- coding: iso-8859-1 -*-
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
3
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
4 """
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
5 Run a Python script under hotshot's control.
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
6
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
7 Adapted from a posting on python-dev by Walter Dörwald
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
8
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
9 usage %prog [ %prog args ] filename [ filename args ]
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
10
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
11 Any arguments after the filename are used as sys.argv for the filename.
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
12 """
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
13
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
14 import sys
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
15 import optparse
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
16 import os
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
17 import hotshot
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
18 import hotshot.stats
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
19
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
20 PROFILE = "hotshot.prof"
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
21
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
22 def run_hotshot(filename, profile, args):
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
23 prof = hotshot.Profile(profile)
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
24 sys.path.insert(0, os.path.dirname(filename))
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
25 sys.argv = [filename] + args
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
26 prof.run("execfile(%r)" % filename)
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
27 prof.close()
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
28 stats = hotshot.stats.load(profile)
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
29 stats.sort_stats("time", "calls")
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
30
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
31 # print_stats uses unadorned print statements, so the only way
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
32 # to force output to stderr is to reassign sys.stdout temporarily
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
33 save_stdout = sys.stdout
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
34 sys.stdout = sys.stderr
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
35 stats.print_stats()
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
36 sys.stdout = save_stdout
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
37
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
38 return 0
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
39
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
40 def main(args):
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
41 parser = optparse.OptionParser(__doc__)
33251
95744a4208a2 Keep option parser from gobbling up the filename to be profiled and the
Skip Montanaro <skip@pobox.com>
parents: 31428
diff changeset
42 parser.disable_interspersed_args()
31428
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
43 parser.add_option("-p", "--profile", action="store", default=PROFILE,
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
44 dest="profile", help='Specify profile file to use')
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
45 (options, args) = parser.parse_args(args)
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
46
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
47 if len(args) == 0:
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
48 parser.print_help("missing script to execute")
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
49 return 1
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
50
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
51 filename = args[0]
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
52 return run_hotshot(filename, options.profile, args[1:])
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
53
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
54 if __name__ == "__main__":
8d06c192f0e6 The bagpipe didn't say "no" (*), so here's a main program script useful for
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
55 sys.exit(main(sys.argv[1:]))