On Wed, 30 May 2012 16:56:21 +0000, John Gordon wrote:

> In <6e534661-0823-4c42-8f60-3052e43b7...@googlegroups.com>
> "psaff...@googlemail.com" <psaff...@googlemail.com> writes:
> 
>> How do I force the memory for these soup objects to be freed?
> 
> Have you tried deleting them, using the "del" command?

del doesn't actually delete objects, it deletes names. The object won't 
be deleted until the last name (or other reference) to the object is 
gone. There is no way to force Python to delete an object while it is 
still in use.

Normally you don't notice the difference because most objects only have a 
single reference:

py> class K:
...     def __del__(self):
...             print("Goodbye cruel world!")
...
py> k = K()
py> del k
Goodbye cruel world!


But see what happens when there are multiple references to the object:

py> k = K()
py> x = k
py> y = [1, 2, x, 3]
py> z = {'spam': y}
py> del k
py> del x
py> del y
py> del z
Goodbye cruel world!

The destructor doesn't get called into the last reference is gone.


-- 
Steven
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to