I am trying to improve the memory usage of my script in python, therefore I need to know what\'s RAM usage of my list. I measure the memory usage with
print
Here is a code snippet that shows two suggested answers. However, the use of pympler gives what I believe to be the correct and more succinct answer to my question. Thank you falsetru :-)
import sys
from pympler.asizeof import asizeof
tuple1 = ('1234','2019-04-27','23.4658')
tuple2 = ('1563','2019-04-27','19.2468')
klist1 = [tuple1]
klist2 = [tuple1,tuple2]
# The results for the following did not answer my question
print ("sys.getsizeof(klist1): ",sys.getsizeof(klist1))
print ("sys.getsizeof(klist2): ",sys.getsizeof(klist2))
# The results for the following give a quite reasonable answer
print ("asizeof(klist1): ",asizeof(klist1))
print ("asizeof(klist2): ",asizeof(klist2))
sys.getsizeof
only take account of the list itself, not items it contains.
According to sys.getsizeof documentation:
... Only the memory consumption directly attributed to the object is accounted for, not the memory consumption of objects it refers to. ...
Use Pympler:
>>> import sys
>>> from pympler.asizeof import asizeof
>>>
>>> obj = [1, 2, (3, 4), 'text']
>>> sys.getsizeof(obj)
48
>>> asizeof(obj)
176