~malept/ubuntu/lucid/python2.6/dev-dependency-fix

« back to all changes in this revision

Viewing changes to Tools/scripts/hotshotmain.py

  • Committer: Bazaar Package Importer
  • Author(s): Matthias Klose
  • Date: 2009-02-13 12:51:00 UTC
  • Revision ID: james.westby@ubuntu.com-20090213125100-uufgcb9yeqzujpqw
Tags: upstream-2.6.1
Import upstream version 2.6.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/env python
 
2
# -*- coding: iso-8859-1 -*-
 
3
 
 
4
"""
 
5
Run a Python script under hotshot's control.
 
6
 
 
7
Adapted from a posting on python-dev by Walter D�rwald
 
8
 
 
9
usage %prog [ %prog args ] filename [ filename args ]
 
10
 
 
11
Any arguments after the filename are used as sys.argv for the filename.
 
12
"""
 
13
 
 
14
import sys
 
15
import optparse
 
16
import os
 
17
import hotshot
 
18
import hotshot.stats
 
19
 
 
20
PROFILE = "hotshot.prof"
 
21
 
 
22
def run_hotshot(filename, profile, args):
 
23
    prof = hotshot.Profile(profile)
 
24
    sys.path.insert(0, os.path.dirname(filename))
 
25
    sys.argv = [filename] + args
 
26
    prof.run("execfile(%r)" % filename)
 
27
    prof.close()
 
28
    stats = hotshot.stats.load(profile)
 
29
    stats.sort_stats("time", "calls")
 
30
 
 
31
    # print_stats uses unadorned print statements, so the only way
 
32
    # to force output to stderr is to reassign sys.stdout temporarily
 
33
    save_stdout = sys.stdout
 
34
    sys.stdout = sys.stderr
 
35
    stats.print_stats()
 
36
    sys.stdout = save_stdout
 
37
 
 
38
    return 0
 
39
 
 
40
def main(args):
 
41
    parser = optparse.OptionParser(__doc__)
 
42
    parser.disable_interspersed_args()
 
43
    parser.add_option("-p", "--profile", action="store", default=PROFILE,
 
44
                      dest="profile", help='Specify profile file to use')
 
45
    (options, args) = parser.parse_args(args)
 
46
 
 
47
    if len(args) == 0:
 
48
        parser.print_help("missing script to execute")
 
49
        return 1
 
50
 
 
51
    filename = args[0]
 
52
    return run_hotshot(filename, options.profile, args[1:])
 
53
 
 
54
if __name__ == "__main__":
 
55
    sys.exit(main(sys.argv[1:]))