[ python-Bugs-716587 ] profile.run makes assumption regarding namespace

SourceForge.net noreply at sourceforge.net
Sun Mar 21 08:41:14 EST 2004


Bugs item #716587, was opened at 2003-04-07 06:56
Message generated for change (Comment added) made by nascheme
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=716587&group_id=5470

Category: Python Library
Group: Python 2.4
Status: Open
Resolution: None
Priority: 1
Submitted By: Greg Fortune (gregfortune)
>Assigned to: Neil Schemenauer (nascheme)
Summary: profile.run makes assumption regarding namespace

Initial Comment:
When profile.run() is executed, it assumes that the local 
and global namespace should be determined from the 
locals and globals for __main__.  In the case of an 
embedded interpreter, this is an annoying assumption.

For instance, I have a PyQt program that has an 
embedded interpreter running as a "debug" console and 
need to profile a little segement of misbehaving code.  
With direct access to all the gui interactively, it seemed 
like a simple task of profiling a function call on one of my 
gui elements, but the namespace in the interpreter is very 
different from that of the main application.

A simple fix is to allow profile.run to be executed with an 
optional dict so the user can give their own namespace.  
A diff -u is attached which accomplishes this.

Note that this problem appears in the current Python CVS 
on sourceforge, but exists at least as early as Python 2.2.


----------------------------------------------------------------------

>Comment By: Neil Schemenauer (nascheme)
Date: 2004-03-21 13:41

Message:
Logged In: YES 
user_id=35752

I always use 'run_call'.  You can easily make a closure to
capture any bindings you want.  Usually it is not necessary.

run_call should be available as a global function and it
should be documented, IMHO.

----------------------------------------------------------------------

Comment By: Greg Fortune (gregfortune)
Date: 2004-03-20 23:40

Message:
Logged In: YES 
user_id=155459

Partially because the only entry point to the profiler mentioned in the 
documentation is profile.run.  If the Profile class were documented, it 
would be a little more obvious how one would work around the 
limitation. 
 
Secondly, the assumption that __main__ is always the desired 
namespace seems limiting and arbitrary.  Anybody wanting to profile 
inside an embedded interpreter is going to have to dig through the 
code the same way I did to identify the problem. 
 
Could the namespace be magically determined based on the function 
that is being profiled?  If so, that is probably an even better solution as 
it becomes a none issue.  At the very least, profile.run should grab the 
namespace from the current interpreter rather than __main__ and 
that's probably better than my initial proposal anyway. 
 
So, it's not a matter of being impossible to work around...  It's just not 
an ideal interface yet. 

----------------------------------------------------------------------

Comment By: Guido van Rossum (gvanrossum)
Date: 2004-03-20 23:01

Message:
Logged In: YES 
user_id=6380

I don't see the issue. Why can't you use

  prof = profile.Profile()
  prof.runctx(cmd, mydict, mydict)

???


----------------------------------------------------------------------

Comment By: Raymond Hettinger (rhettinger)
Date: 2003-07-09 06:18

Message:
Logged In: YES 
user_id=80475

This seems like a reasonable request.  The use case is 
uncommon but I don't like having __main__ hardwired in 
the code.  What do you think?

If you want the change, should it be put into Py2.3?

----------------------------------------------------------------------

Comment By: Greg Fortune (gregfortune)
Date: 2003-04-07 14:36

Message:
Logged In: YES 
user_id=155459

Doh, sorry about that.  Guess I should actually check it after I 
submit...


----------------------------------------------------------------------

Comment By: Michael Hudson (mwh)
Date: 2003-04-07 12:31

Message:
Logged In: YES 
user_id=6656

There's no uploaded file!  You have to check the
checkbox labeled "Check to Upload & Attach File"
when you upload a file.

Please try again.

(This is a SourceForge annoyance that we can do
nothing about. :-( )

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=716587&group_id=5470



More information about the Python-bugs-list mailing list