Algunos código:¿Tengo que hacer StringIO.close()?
import cStringIO
def f():
buffer = cStringIO.StringIO()
buffer.write('something')
return buffer.getvalue()
El documentation dice:
StringIO.close()
: liberar el búfer de memoria. Intentar hacer más operaciones de con un objeto StringIO cerrado generará un ValueError.
¿Tengo que hacer buffer.close()
, o sucederá automáticamente cuando el búfer se sale del alcance y se recoge la basura?
ACTUALIZACIÓN:
Hice una prueba:
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()'
Resultado:
[email protected]:~/projects$ python test.py
before f()
Buffer died!
after f()
[email protected]:~/projects$
¿por qué no imprimir f() en lugar de sólo un desnudo f()? – mpag