[IPython-dev] Should IPython be a singleton?
Wed Aug 26 18:34:38 CDT 2009
Thanks! I will have a look at this to see how it differs from what I have
On Wed, Aug 26, 2009 at 4:27 PM, Robert Kern <email@example.com> wrote:
> On 2009-08-26 18:17 PM, Brian Granger wrote:
> > When tracking down problems like this, one thing you have to be very
> > careful
> > about is not creating references via your instrumentation. It's
> > disturbingly
> > easy to do. :-)
> > Yes, it is very tough to do right.
> > __builtins__.__IPYTHON__ and __builtins__.__IPYTHON__active are two
> > culprits,
> > and the remaining one is a cell object. I'm not sure where he is
> > coming from.
> > In my version, I have gotten rid of __IPYTHON__ and IPYTHON_active is an
> > int.
> > What is a cell object?
> It is created when there are closures.
> > Could I see the foo.py script?
> Oops! Sorry. I thought I catted it. Here it is with a few more things
> cleaned up.
> [~]$ cat foo.py
> import gc
> import sys
> import types
> from IPython.core.shell import InteractiveShell
> real_main = sys.modules['__main__']
> s = InteractiveShell('foo')
> print s
> # Clean up.
> del s.shell
> del s
> del __builtins__.__IPYTHON__active
> del __builtins__.__IPYTHON__
> if hasattr(sys, 'ipcompleter'):
> del sys.ipcompleter
> sys.stdin = sys.__stdin__
> sys.stdout = sys.__stdout__
> sys.stderr = sys.__stderr__
> sys.displayhook = sys.__displayhook__
> sys.excepthook = sys.__excepthook__
> sys.modules['__main__'] = real_main
> for obj in gc.get_objects():
> if getattr(type(obj), '__name__', None) == 'InteractiveShell':
> print obj
> refs = gc.get_referrers(obj)
> print '%s references:' % len(refs)
> for ref in refs:
> print type(ref)
> if isinstance(ref, dict):
> print 'A dict with keys: %r' % (ref.keys(),)
> elif isinstance(ref, list):
> print 'A list of %s elements; probably gc.get_objects().' %
> elif type(ref).__name__ == 'cell':
> print 'A cell: %r' % ref
> print ref.cell_contents
> print ref
> Robert Kern
> "I have come to believe that the whole world is an enigma, a harmless
> that is made terrible by our own mad attempt to interpret it as though it
> an underlying truth."
> -- Umberto Eco
> IPython-dev mailing list
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the IPython-dev