How to find number of bytes taken by python variable

Viewed 50641

Is there anyway i can know how much bytes taken by particular variable in python. E.g; lets say i have

int = 12
print (type(int))

it will print

<class 'int'> 

But i wanted to know how many bytes it has taken on memory? is it possible?

9 Answers

In Python 3 you can use sys.getsizeof().

import sys
myint = 12
print(sys.getsizeof(myint))

The best library for that is guppy:

import guppy
import inspect 

def get_object_size(obj):
    h = guppy.hpy()
    callers_local_vars = inspect.currentframe().f_back.f_locals.items()

    vname = "Constant"

    for var_name, var_val in callers_local_vars:
        if var_val == obj:
            vname = str(var_name)

    size = str("{0:.2f} GB".format(float(h.iso(obj).domisize) / (1024 * 1024)))

   return str("{}: {}".format(vname, size))

The accepted answer sys.getsizeof is correct.

But looking at your comment about the accepted answer you might want the number of bits a number is occupying in binary. You can use bit_length

(16).bit_length() # '10000' in binary
>> 5

(4).bit_length() # '100' in binary
>> 3
Related