Код: Выделить всё
from pympler import asizeof
from gc import get_referents
import numpy as np
import sys
def getsize(obj):
"""sum size of object & members."""
seen_ids = set()
size = 0
objects = [obj]
while objects:
need_referents = []
for obj in objects:
if id(obj) not in seen_ids:
seen_ids.add(id(obj))
size += sys.getsizeof(obj)
need_referents.append(obj)
objects = get_referents(*need_referents)
return size
my_set8 = {np.uint8(x) for x in range(256)}
my_set16 = {np.uint16(x) for x in range(65536)}
print(f"{asizeof.asizeof(my_set8)=}")
print(f"{getsize(my_set8)=}")
print(f"{asizeof.asizeof(my_set16)=}")
print(f"{getsize(my_set16)=}")
Код: Выделить всё
asizeof.asizeof(my_set8)=16616
getsize(my_set8)=14808
asizeof.asizeof(my_set16)=4194536
getsize(my_set16)=3801304
Подробнее здесь: https://stackoverflow.com/questions/792 ... t-from-sys