Должен ли я делать 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$

Ответы на вопрос(4)

Ваш ответ на вопрос