Размер объекта Python
Введение | |
Размер объекта | |
Похожие статьи |
Введение
Размер объекта в памяти
Рассмотрим несколько способов изменения размера объекта. Начнём со списка
import pickle from sys import getsizeof from pympler import asizeof l = ["apple", "banana", "cherry"] print(f"getsizeof(l): {getsizeof(l)}") print(f"asizeof(l): {asizeof.asizeof(l)}") print(f"pickle.dumps(l): {len(pickle.dumps(l))}")
getsizeof(l): 80 asizeof(l): 248 pickle.dumps(l): 42
Теперь проверим на строке
s = "applebananacherry" print(f"getsizeof(s): {getsizeof(s)}") print(f"asizeof(s): {asizeof.asizeof(s)}") print(f"pickle.dumps(s): {len(pickle.dumps(s))}")
getsizeof(s): 66 asizeof(s): 72 pickle.dumps(s): 32
Теперь проверим на кастомном классе из статьи про __slots__
import timeit from pympler import asizeof class Developer: __slots__ = ("name", "age", "salary", "framework") def __init__(self, name, age, salary, framework): self.name = name self.age = age self.salary = salary self.framework = framework class Programmer: def __init__(self, name, age, salary, framework): self.name = name self.age = age self.salary = salary self.framework = framework slotted_emp = Developer("Andrei", 36, 5000, "FastAPI") not_slotted_emp = Programmer("Eugene", 59, 95000, "Spring") print(f"asizeof(s) slotted size: {asizeof.asizeof(slotted_emp)}") print(f"asizeof(s) not slotted size: {asizeof.asizeof(not_slotted_emp)}") print(f"getsize() slotted size: {getsizeof(slotted_emp)}") print(f"getsize() not slotted size: {getsizeof(not_slotted_emp)}") print(f"pickle.dumps() slotted size: {len(pickle.dumps(slotted_emp))}") print(f"pickle.dumps() not slotted size: {len(pickle.dumps(not_slotted_emp))}")
sizeof(s) slotted size: 240 asizeof(s) not slotted size: 560 getsize() slotted size: 64 getsize() not slotted size: 48 pickle.dumps() slotted size: 106 pickle.dumps() not slotted size: 105
Размер объекта | |
Основы Python | |
configparser | |
docstring | |
#!: Shebang | |
Объекты | |
Итерация | |
os | |
pathlib |