deleting objects present in a list
Sandy
dksreddy at gmail.com
Tue Apr 20 18:10:49 EDT 2010
Thanks for the replies.
Terry,
What does 'immediately' mean? I did a small test and here are the
results.
import psutil
def testing():
class Object():
pass
l = {}
apm = psutil.avail_phymem()/(1024*1024)
print 'Before creating objs: ' + repr(apm)
for i in xrange(500000):
l.update({Object():1})
apm = psutil.avail_phymem()/(1024*1024)
print 'After creating objs: ' + repr(apm)
return l
def hello():
myl = testing()
apm = psutil.avail_phymem()/(1024*1024)
print 'Before deleting: ' + repr(apm)
del myl
# Here I want to delete the objects in the list
# deleting myl doesn't seem to change the memory
apm = psutil.avail_phymem()/(1024*1024)
print 'After deleting: ' + repr(apm)
if __name__ == '__main__':
hello()
OUTPUT:
Before creating objs: 2516L
After creating objs: 2418L
Before deleting: 2418L
After deleting: 2430L
In my original case the memory is not getting released even after long
time.
- dksr
On Apr 20, 8:44 pm, Terry Reedy <tjre... at udel.edu> wrote:
> On 4/20/2010 3:21 PM, Sandy wrote:
>
> > Hi all,
> > I have large number of objects created and to handle them properly, I
> > store them in a list. How can I delete all of these objects (delete I
> > mean here is to remove the object from memory not just from list)?
> > I cannot use the list to iterate through the objects to delete them.
> > Because 'del' only reduces the reference count and as it is present in
> > the list it is not deleted. I cannot delete the list because I loose
> > control over the objects.
>
> Deleting the list is the best you can do. If that deletes the last
> reference, then the interpreter will delete the object when it feels
> like it. For *current* CPython, this will be immediately. For other
> implementations, whenever.
More information about the Python-list
mailing list