is open(...).read() a resource leak?
Benjamin Rutt
rutt at bmi.osu.edu
Wed Nov 2 15:14:41 EST 2005
"Fredrik Lundh" <fredrik at pythonware.com> writes:
> Benjamin Rutt wrote:
>
>> If I did the following in an infinite loop, would the host system/user
>> account soon run out of file descriptors? (I'm thinking no, since I'd
>> imagine that a file object has a __del__-like method that will call
>> close() automatically since it goes out of scope):
>>
>> open('/home/rutt/.bashrc,'r').read()
>
> under CPython, this is not a problem (the reference counting system will
> make sure that file handles are reclaimed as fast as new ones are opened).
It would be reclaimed immediately, correct? (As opposed to waiting
for the next file-open call or some later time). In my understanding
of CPython gc and reference counting, only the cyclical objects will
be lazily/periodically reclaimed in a scheduled fashion, while all
non-cyclical objects are reclaimed immediately when their last
incoming reference decrements the count to 0.
> under an arbitrary Python implementation, it may be a problem,
> especially if the implementation doesn't trigger a collection if it
> runs out of handles (that can be seen as a bug, though...).
OK, makes sense, thank you.
--
Benjamin Rutt
More information about the Python-list
mailing list