Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > Deleting objects on the fly

Reply
Thread Tools

Deleting objects on the fly

 
 
Godzilla
Guest
Posts: n/a
 
      08-10-2007
Hello,

I wish to know whether I should delete objects created on the fly via
the "del obj" statement. I noticed the RAM usage increased whenever
the application is being run for a long time. I am creating lots of
objects (messages) on the fly for communication between threads.

Rather than having python's gc to do the work, does it make a
difference if I force a deletion?

Thanks.

 
Reply With Quote
 
 
 
 
Michele Simionato
Guest
Posts: n/a
 
      08-10-2007
On Aug 10, 2:25 am, Godzilla <(E-Mail Removed)> wrote:
> Hello,
>
> I wish to know whether I should delete objects created on the fly via
> the "del obj" statement. I noticed the RAM usage increased whenever
> the application is being run for a long time. I am creating lots of
> objects (messages) on the fly for communication between threads.
>
> Rather than having python's gc to do the work, does it make a
> difference if I force a deletion?
>
> Thanks.


Probably not, 'del x' just decrements the reference count, but
it is the gc who does the real job. See http://docs.python.org/ref/customization.html#l2h-175

Do you have reference cycles in your application? You should
tell us something more.

Michele Simionato

 
Reply With Quote
 
 
 
 
Campbell Barton
Guest
Posts: n/a
 
      08-10-2007
Michele Simionato wrote:
> On Aug 10, 2:25 am, Godzilla <(E-Mail Removed)> wrote:
>> Hello,
>>
>> I wish to know whether I should delete objects created on the fly via
>> the "del obj" statement. I noticed the RAM usage increased whenever
>> the application is being run for a long time. I am creating lots of
>> objects (messages) on the fly for communication between threads.
>>
>> Rather than having python's gc to do the work, does it make a
>> difference if I force a deletion?
>>
>> Thanks.

>
> Probably not, 'del x' just decrements the reference count, but
> it is the gc who does the real job. See http://docs.python.org/ref/customization.html#l2h-175
>
> Do you have reference cycles in your application? You should
> tell us something more.
>
> Michele Simionato
>


del x will remove x from memory if nothing else is refering to it, but
this dosnt really take the load off the GC since the GC will still check
the references and remove if there are none.

In some cases you could use to save ram...

a = 'really big string'
....do stuff with a...
del a

b = 'another really big string'
....do stuff with b...
del b


in the case that 'a' is not needed, after its used, and you dont want to
re-use the variable name. then del will free some ram since they both
wont need to exist at the same time.

WHen I say free ram, python its self will probably keep the ram for
later use but at least it wont need a and b in memory at once, so its
likely not to use as much ram.

But be careful using del in a loop since it can slow things down, its
like adding and removing an item from a dictionary many times. your
better off just redefining that variable or using del after the loops
finished.

 
Reply With Quote
 
Terry Reedy
Guest
Posts: n/a
 
      08-10-2007

"Campbell Barton" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
| Michele Simionato wrote:
| > Probably not, 'del x' just decrements the reference count,

Or as
http://docs.python.org/ref/del.html
puts it, " Deletion of a name removes the binding of that name from the
local or global namespace,"

| del x will remove x from memory if nothing else is refering to it,

This is implementation dependent: true for CPython, not for Jython, ??? for
IronPython.

tjr



 
Reply With Quote
 
Dustan
Guest
Posts: n/a
 
      08-11-2007
On Aug 10, 1:49 pm, "Terry Reedy" <(E-Mail Removed)> wrote:
> "Campbell Barton" <(E-Mail Removed)> wrote in message
>
> news:(E-Mail Removed)...| Michele Simionato wrote:
>
> | > Probably not, 'del x' just decrements the reference count,
>
> Or ashttp://docs.python.org/ref/del.html
> puts it, " Deletion of a name removes the binding of that name from the
> local or global namespace,"
>
> | del x will remove x from memory if nothing else is refering to it,
>
> This is implementation dependent: true for CPython, not for Jython, ??? for
> IronPython.


Wait a second; do you mean to say that in Jython, del x will never
remove x from memory? How do you free up RAM?

 
Reply With Quote
 
Paul Rubin
Guest
Posts: n/a
 
      08-11-2007
Dustan <(E-Mail Removed)> writes:
> > | del x will remove x from memory if nothing else is refering to it,
> > This is implementation dependent: true for CPython, not for Jython, ??? for
> > IronPython.

> Wait a second; do you mean to say that in Jython, del x will never
> remove x from memory? How do you free up RAM?


It stays around until the GC picks it up.
 
Reply With Quote
 
Steve Holden
Guest
Posts: n/a
 
      08-11-2007
Dustan wrote:
> On Aug 10, 1:49 pm, "Terry Reedy" <(E-Mail Removed)> wrote:
>> "Campbell Barton" <(E-Mail Removed)> wrote in message
>>
>> news:(E-Mail Removed)...| Michele Simionato wrote:
>>
>> | > Probably not, 'del x' just decrements the reference count,
>>
>> Or ashttp://docs.python.org/ref/del.html
>> puts it, " Deletion of a name removes the binding of that name from the
>> local or global namespace,"
>>
>> | del x will remove x from memory if nothing else is refering to it,
>>
>> This is implementation dependent: true for CPython, not for Jython, ??? for
>> IronPython.

>
> Wait a second; do you mean to say that in Jython, del x will never
> remove x from memory? How do you free up RAM?
>

Because the exact method of garbage collection is independent of the
language definition, Jython uses the Java garbage collector, which works
(approximately) as follows.

In that language memory is allocated until a request cannot be
satisfies, then a scan is performed for unreferenced objects whose space
is reclaimed. Only if this doesn't yield enough space to allocate the
new object is more memory requested from the OS by the process.

regards
Steve
--
Steve Holden +1 571 484 6266 +1 800 494 3119
Holden Web LLC/Ltd http://www.holdenweb.com
Skype: holdenweb http://del.icio.us/steve.holden
--------------- Asciimercial ------------------
Get on the web: Blog, lens and tag the Internet
Many services currently offer free registration
----------- Thank You for Reading -------------

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
“test what you fly and fly what you test” Lawrence D'Oliveiro NZ Computing 0 06-05-2009 02:06 AM
THE FLY & THE FLY II teem DVD Video 0 12-10-2005 09:31 PM
Fly outmenu on the fly Brian Javascript 0 04-08-2005 01:34 AM
To Fly or not to fly? Should I move from Mozilla 1.5 to T-bird andF-bird? Daniel Steinberg Firefox 7 11-06-2003 11:31 AM
To Fly or not to fly? Should I move from Mozilla 1.5 to T-bird andF-bird? Daniel Steinberg Firefox 5 11-05-2003 06:23 AM



Advertisments