Метод __sizeof__() — это dunder (магический) метод, который возвращает внутренний размер памяти объекта в байтах, не включая накладные расходы сборщика мусора (GC).
__sizeof__() для получения сведений о сыром потреблении памятиmy_list = [1, 2, 3]
my_list.__sizeof__() # возвращает сырой внутренний размер в байтах
sys.getsizeof()sys.getsizeof() внутри вызывает __sizeof__(), но добавляет накладные расходы GC к сырому размеру:
import sys
my_list = [1, 2, 3]
sys.getsizeof(my_list) # возвращает __sizeof__() + накладные расходы GC
sys.getsizeof() — это рекомендуемый способ измерения размера объекта на практике| Метод | Включает накладные расходы GC | Рекомендуется использовать |
|---|---|---|
__sizeof__() | Нет | Нет |
sys.getsizeof() | Да | Да |
sys.getsizeof() для общего профилирования памяти__sizeof__() в пользовательских классах, чтобы гарантировать точное измерение размера при вызове sys.getsizeof() на твоих объектах:class MyClass:
def __sizeof__(self):
return object.__sizeof__(self) + self.data.__sizeof__()
Метод __sizeof__() включает накладные расходы сборщика мусора в расчет размера, в то время как sys.getsizeof() возвращает только размер сырой внутренней памяти.
Новый — ещё не проверен сообществом
Вы