Размер объекта 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

Article author: Andrei Olegovich

Похожие статьи
Размер объекта
Основы Python
configparser
docstring
#!: Shebang
Объекты
Итерация
os
pathlib

Search this site

Subscribe to Telegram channel @aofeed to follow new articles and updates to old ones

Go to channel

@aofeed

Ask a question in the Telegram group

@aofeedchat

Contacts and cooperation:
I recommend our hosting beget.ru
Write to info@urn.su, info@aredel.com if you:
1. Want to write an article for our site or translate an article into your native language.
2. Want to place thematically relevant ads on the site.
3. Ads on my site pass maximum censorship. If you see an ad block unsuitable for school-age children, shocking or misleading - please contact us by e-mail
4. Found a mistake, inaccuracy, bug, etc. on the site. ... .......
5. Articles can be shared on social media by clicking a network icon: