472,133 Members | 1,090 Online
Bytes | Software Development & Data Engineering Community
Post +

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 472,133 software developers and data experts.

Deleting objects on the fly

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.

Aug 10 '07 #1
6 1313
On Aug 10, 2:25 am, Godzilla <godzillais...@gmail.comwrote:
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

Aug 10 '07 #2
Michele Simionato wrote:
On Aug 10, 2:25 am, Godzilla <godzillais...@gmail.comwrote:
>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.

Aug 10 '07 #3

"Campbell Barton" <cb*****@metavr.comwrote in message
news:46**************@metavr.com...
| 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

Aug 10 '07 #4
On Aug 10, 1:49 pm, "Terry Reedy" <tjre...@udel.eduwrote:
"Campbell Barton" <cbar...@metavr.comwrote in message

news:46**************@metavr.com...| 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?

Aug 11 '07 #5
Dustan <Du**********@gmail.comwrites:
| 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.
Aug 11 '07 #6
Dustan wrote:
On Aug 10, 1:49 pm, "Terry Reedy" <tjre...@udel.eduwrote:
>"Campbell Barton" <cbar...@metavr.comwrote in message

news:46**************@metavr.com...| 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 -------------

Aug 11 '07 #7

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

2 posts views Thread by Thomas Philips | last post: by
6 posts views Thread by Thomas Philips | last post: by
6 posts views Thread by Matan Nassau | last post: by
9 posts views Thread by Aguilar, James | last post: by
4 posts views Thread by al havrilla | last post: by
51 posts views Thread by Joe Van Dyk | last post: by
62 posts views Thread by ivan.leben | last post: by
reply views Thread by leo001 | last post: by

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.