This recipe shows how to find the sizes of various common data types in Python, both built-in and user-defined. It uses the sys.getsizeof() function and also discusses a few other points of interest.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | from __future__ import print_function
import sys
# data_type_sizes_w_list_comp.py
# A program to show the sizes in bytes, of values of various
# Python data types.`
# Author: Vasudev Ram
# Copyright 2016 Vasudev Ram - https://vasudevram.github.io
#class Foo:
class Foo(object):
pass
def gen_func():
yield 1
def setup_data():
a_bool = bool(0)
an_int = 0
a_long = long(0)
a_float = float(0)
a_complex = complex(0, 0)
a_str = ''
a_tuple = ()
a_list = []
a_dict = {}
a_set = set()
an_iterator = iter([1, 2, 3])
a_function = gen_func
a_generator = gen_func()
an_instance = Foo()
data = (a_bool, an_int, a_long, a_float, a_complex,
a_str, a_tuple, a_list, a_dict, a_set,
an_iterator, a_function, a_generator, an_instance)
return data
data = setup_data()
print("\nPython data type sizes:\n")
header = "{} {} {}".format(\
"Data".center(10), "Type".center(15), "Length".center(10))
print(header)
print('-' * 40)
rows = [ "{} {} {}".format(\
repr(item).center(10), str(type(item)).center(15), \
str(sys.getsizeof(item)).center(10)) for item in data[:-4] ]
print('\n'.join(rows))
print('-' * 70)
rows = [ "{} {} {}".format(\
repr(item).center(10), str(type(item)).center(15), \
str(sys.getsizeof(item)).center(10)) for item in data[-4:] ]
print('\n'.join(rows))
print('-' * 70)
|
This post:
http://jugad2.blogspot.in/2016/04/exploring-sizes-of-data-types-in-python.html
has more details, sample output, and discussion of a few related points.
tips: "long" type doesn't work in python3.5
Yes, thanks, int and long are unified now.