rm() function of r alternative in python
Asked Answered
M

2

9

How to remove the variables in python to clear ram memory in python?

R :

a = 2 
rm(a)

Python:

a = 2

How to clear the single variables or a group of variables?

Mcgehee answered 21/1, 2017 at 8:10 Comment(0)
I
6

python memory cleanup is managed by the garbage collector. on CPython it is based on reference counting. you can call the garbage collector explicitly like this:

import gc
gc.collect()

this can be done after calling a function that uses large variables in terms of ram. Note that you do not have to call this function explicitly as the garbage collector will be called eventually to free up ram automatically.

if you still want to explicitly remove a variable you can use the del statement (as written before) like this:

x = [1, 2, 3]
i = 42
s = 'abc'

del s  # delete string
del x[1]  # delete single item in a list
del x, i  # delete multiple variables in one statement

del statement

to better understand what del does and its limitations lets take a look at how python stores variables on ram.

x = [1, 2, 3]

the above code creates a reference between the name x to the list [1, 2, 3] which is stored on the heap. x is just a pointer to that list.

x = [1, 2, 3]
y = x
x is y  # True

in this example we have the reference x and the list on the heap [1, 2, 3], but what is this new y variable? its just another pointer, meaning now we have two pointers to the same [1, 2, 3] list.

returning to the del statement, if we delete one variable it wont affect the list or the other variable

x = [1, 2, 3]
y = x
del x
print(y)  # prints [1, 2, 3]

so here we will not free up the list, only decrease the reference counting to the list but we still have y pointing to it.

to overcome this we can use the weakref module to point y to the list and when x is deleted the list is also deleted.

Bottom line

  • use gc.collect() after heavy memory functions
  • use del x, y to delete all pointers to a specific object to free it up
  • use weakref module to avoid holding objects on the ram after all other references to them are deleted
Inarticulate answered 21/1, 2017 at 9:5 Comment(1)
Thanks. What about functions? Is it working also with del?Dowson
E
2

Use del

>>> a=2
>>> del a
>>> a
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined
Equity answered 21/1, 2017 at 8:12 Comment(2)
How to do that for group of variables can we delete 5 variables at a timeMcgehee
@konerunikhil Did you try something like the following: given a = 3 and b = {'a': 1, 'b': 2}, then del a, b ? This deletes a and b.Paleozoology

© 2022 - 2024 — McMap. All rights reserved.