Должен ли я использовать StringIO.close()?

Некоторый код:

import cStringIO

def f():
    buffer = cStringIO.StringIO()
    buffer.write('something')
    return buffer.getvalue()

Документация говорит:

StringIO.close(): Освободить буфер памяти. Попытка сделать дальше операции с закрытым объектом StringIO вызовут ошибку ValueError.

Должен ли я делать buffer.close(), или это произойдет автоматически, когда буфер выйдет за пределы области видимости и будет собран мусор?

ОБНОВЛЕНИЕ:

Я провел тест:

import StringIO, weakref

def handler(ref):
    print 'Buffer died!'

def f():
    buffer = StringIO.StringIO()
    ref = weakref.ref(buffer, handler)
    buffer.write('something')
    return buffer.getvalue()

print 'before f()'
f()
print 'after f()'

Результат:

vic@wic:~/projects$ python test.py 
before f()
Buffer died!
after f()
vic@wic:~/projects$

27
задан Peter Mortensen 26 August 2014 в 19:27
поделиться