sizeof module
Simple function for determining the memory usage of common Python values and objects.
- sizeof.sizeof.sizeof(obj: Any, deep: bool = False) int [source]
Estimate the memory consumption of a Python object (either the root object itself exclusively or, in the case of a deep traversal, the entire tree of objects reachable from it).
>>> sys.getsizeof([]) == sizeof([]) True >>> sys.getsizeof(123) == sizeof(123) True >>> sys.getsizeof(123.0123) == sizeof(123.0123) True >>> sys.getsizeof(complex(2, -3)) == sizeof(complex(2, -3)) True >>> sys.getsizeof(True) == sizeof(True) True >>> sys.getsizeof(None) == sizeof(None) True >>> sizeof('ab') == sizeof('a') + 1 True >>> sizeof(bytes([1, 2])) + 1 == sizeof(bytes([1, 2, 3])) True >>> sizeof(bytearray([1, 2])) <= sizeof(bytearray([1, 2, 3])) True >>> mv0 = memoryview(bytes([1, 2])) >>> mv1 = memoryview(bytes([1, 2, 3])) >>> sizeof(mv0) == sizeof(mv1) True >>> xs = [1, 2, 3] >>> ys = {'a':1, 'b':2, 'c':3} >>> zs = {frozenset([1, 2, 3]): [1, 2, 3], frozenset(['a']): 'bc'} >>> sys.getsizeof(xs) == sizeof(xs) True >>> sys.getsizeof(range(0,10)) == sizeof(range(0,10)) True
When the
deep
argument isTrue
, the total amount of memory consumed by the object and all of its descendants by reference is calculated (with deduplication).>>> sys.getsizeof(xs) < sizeof(xs, deep=True) True >>> sizeof(set(xs), deep=True) > sys.getsizeof(set(xs)) True >>> sizeof({123}) == sys.getsizeof({123}) True >>> sizeof({123}, deep=True) > sys.getsizeof({123}) True >>> sizeof([xs], deep=True) > sys.getsizeof([xs]) True >>> sizeof([xs, ys, zs], deep=True) > 2 * sizeof([xs, xs, xs], deep=True) True >>> sizeof((xs, ys, zs), deep=True) > 2 * sizeof((xs, xs, xs), deep=True) True >>> sizeof([xs, xs], deep=True) < sizeof([xs, [1, 2, 3]], deep=True) True >>> sizeof([xs], deep=True, _exclude=set([id(xs)])) == sizeof([xs]) True >>> sizeof(range(0,10), deep=True) > sizeof(range(0,10)) True