[Python-Dev] Smart resource destruction (was Re: Use for enumerate) (original) (raw)
Guido van Rossum guido@python.org
Sun, 28 Apr 2002 09:14:53 -0400
- Previous message: [Python-Dev] Smart resource destruction (was Re: Use for enumerate)
- Next message: [Python-Dev] _PyString_Resize
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Look, if we're so careful about thread-naive code not crashing the interpretter (*) or circular references leaking memory (**), then I don't see why naive code should be allowed to leak file descriptors, database handles, query buffers, locks, or other similar things which:
Ian, why the speech? If you leave the f.close() call out, it will happen automatically. In CPython, it happens automatically when the refcount goes to 0, which (in this example) is when the function returns. In Jython, however, it would be when the garbage collector feels like it, which may be too late in programs that open lots of files -- and that's why we recommend as a general measure to explicitly close files.
*** .class et. al. notwithstanding. The point is to avoid, for example, circular linked lists.
We're way ahead of you here, too. Since Python 2.0, there's GC (in addition to the refcounting) that clears up cycles. :)
--Guido van Rossum (home page: http://www.python.org/~guido/)
- Previous message: [Python-Dev] Smart resource destruction (was Re: Use for enumerate)
- Next message: [Python-Dev] _PyString_Resize
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]