[Python-ideas] feature to make traceback objects usable without references to frame locals and globals

Guido van Rossum guido at python.org
Sat Jun 26 04:58:38 CEST 2010


Do you have profiling data to support your claim?

On Fri, Jun 25, 2010 at 7:48 PM,  <ghazel at gmail.com> wrote:
> Hi,
>
> I'm interested in a feature which allows users to discard the locals
> and globals references from frames held by a traceback object.
>
> Currently, traceback objects are used when capturing and re-raising
> exceptions. However, they hold a reference to all frames, which hold a
> reference to their locals and globals. These are not needed by the
> default traceback output, and can cause serious memory bloat if a
> reference to a traceback object is kept for any significant length of
> time, and there are even big red warnings in the Python docs about
> using them in one frame. (
> http://docs.python.org/release/3.1/library/sys.html#sys.exc_info ).
>
> Example usage would be something like:
>
> import sys
> try:
>    1/0
> except:
>    t, v, tb = sys.exc_info()
>    tb.clean()
> # ... much later ...
> raise t, v, tb
>
>
> Which would be basically a function to do this:
>
> import sys
> try:
>    1/0
> except:
>    t, v, tb = sys.exc_info()
>    c = tb
>    while c:
>        c.tb_frame.f_locals = None
>        c.tb_frame.f_globals = None
>        c = c.tb_next
> # ... much later ...
> raise t, v, tb
>
>
> Twisted has done a very similar thing with their
> twisted.python.failure.Failure object, which stringifies the traceback
> data and discards the reference to the Python traceback entirely (
> http://twistedmatrix.com/trac/browser/tags/releases/twisted-10.0.0/twisted/python/failure.py#L437
> ) - they also replicate a lot of traceback printing functions to make
> use of this stringified data.
>
> It's worth noting that cgitb and other applications make use of locals
> and globals in its traceback output. However, I believe the vast
> majority of traceback usage does not make use of these references, and
> a significant penalty is paid as a result.
>
> Is there any interest in such a feature?
>
>
> -Greg
> _______________________________________________
> Python-ideas mailing list
> Python-ideas at python.org
> http://mail.python.org/mailman/listinfo/python-ideas
>



-- 
--Guido van Rossum (python.org/~guido)



More information about the Python-ideas mailing list