Bazı kod:StringIO.close() yapmak zorunda mıyım?
import cStringIO
def f():
buffer = cStringIO.StringIO()
buffer.write('something')
return buffer.getvalue()
documentation diyor ki:
StringIO.close()
: hafıza tampon boşaltın. Kapalı bir StringIO nesnesiyle işlemlerini daha fazla yapmayı denemek bir ValueError artacaktır.
buffer.close()
yapmak zorunda mıyım yoksa arabellek kapsam dışında kaldığında ve çöp toplandığında otomatik olarak gerçekleşir mi?
GÜNCELLEME: Bir test yaptım
:
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()'
Sonuç:
[email protected]:~/projects$ python test.py
before f()
Buffer died!
after f()
[email protected]:~/projects$
neden f() öğesini çıplak bir f() yerine yazdırmıyorsunuz? – mpag