いくつかのコード:StringIO.close()を行う必要がありますか?
import cStringIO
def f():
buffer = cStringIO.StringIO()
buffer.write('something')
return buffer.getvalue()
documentationは言う:
StringIO.close()
:メモリバッファを解放します。閉じたStringIOオブジェクトを使ってさらに 操作を実行しようとすると、ValueErrorが発生します。
buffer.close()
を実行する必要がありますか、またはバッファがスコープから外れてガベージコレクションされると自動的に発生しますか?
UPDATE:私はテストをした
:
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()'
結果:
[email protected]:~/projects$ python test.py
before f()
Buffer died!
after f()
[email protected]:~/projects$
なぜ、裸のf()の代わりにf()を印刷しないのですか? – mpag