@@ -36,7 +36,7 @@ def run(statement, filename=None, sort=-1):
3636 result = prof .print_stats (sort )
3737 return result
3838
39- def runctx (statement , globals , locals , filename = None ):
39+ def runctx (statement , globals , locals , filename = None , sort = - 1 ):
4040 """Run statement under profiler, supplying your own globals and locals,
4141 optionally saving results in filename.
4242
@@ -53,7 +53,7 @@ def runctx(statement, globals, locals, filename=None):
5353 if filename is not None :
5454 prof .dump_stats (filename )
5555 else :
56- result = prof .print_stats ()
56+ result = prof .print_stats (sort )
5757 return result
5858
5959# ____________________________________________________________
@@ -164,7 +164,8 @@ def main():
164164 parser .add_option ('-o' , '--outfile' , dest = "outfile" ,
165165 help = "Save stats to <outfile>" , default = None )
166166 parser .add_option ('-s' , '--sort' , dest = "sort" ,
167- help = "Sort order when printing to stdout, based on pstats.Stats class" , default = - 1 )
167+ help = "Sort order when printing to stdout, based on pstats.Stats class" ,
168+ default = - 1 )
168169
169170 if not sys .argv [1 :]:
170171 parser .print_usage ()
@@ -173,14 +174,18 @@ def main():
173174 (options , args ) = parser .parse_args ()
174175 sys .argv [:] = args
175176
176- if (len (sys .argv ) > 0 ):
177- sys .path .insert (0 , os .path .dirname (sys .argv [0 ]))
178- fp = open (sys .argv [0 ])
179- try :
180- script = fp .read ()
181- finally :
182- fp .close ()
183- run ('exec(%r)' % script , options .outfile , options .sort )
177+ if len (args ) > 0 :
178+ progname = args [0 ]
179+ sys .path .insert (0 , os .path .dirname (progname ))
180+ with open (progname , 'rb' ) as fp :
181+ code = compile (fp .read (), progname , 'exec' )
182+ globs = {
183+ '__file__' : progname ,
184+ '__name__' : '__main__' ,
185+ '__package__' : None ,
186+ '__cached__' : None ,
187+ }
188+ runctx (code , globs , None , options .outfile , options .sort )
184189 else :
185190 parser .print_usage ()
186191 return parser
0 commit comments