Курс Python → Оптимизация памяти в Python
Python — это объектно-ориентированный язык программирования, который работает с объектами и ссылками на них. Когда мы создаем объект какого-то класса, Python выделяет для него определенную ячейку памяти и возвращает его идентификатор с помощью функции id(). Этот идентификатор является уникальным для каждого объекта в рамках своего запуска программы.
Однако, если мы создадим два объекта одного и того же класса и вызовем функцию id() для обоих объектов, мы увидим, что их идентификаторы совпадают. Это происходит потому, что Python оптимизирует использование памяти и при создании второго объекта класса, он использует ту же ячейку памяти, что и для первого объекта.
Это поведение связано с особенностями реализации Python (CPython) и его механизмом работы с памятью. При вызове функции id() Python возвращает адрес ячейки памяти, в которой хранится объект, и этот адрес может быть одинаковым для нескольких объектов, если они находятся в одной и той же ячейке памяти.
class WTF:
pass
obj1 = WTF()
obj2 = WTF()
print(id(obj1)) # Выводит идентификатор объекта obj1
print(id(obj2)) # Выводит идентификатор объекта obj2
В приведенном примере мы создаем два объекта класса WTF и выводим их идентификаторы с помощью функции id(). Как правило, идентификаторы объектов будут различными, но в случае оптимизации памяти Python может использовать одинаковые идентификаторы для объектов, находящихся в одной и той же ячейке памяти.
Другие уроки курса "Python"
- Расчет времени выполнения
- Приближение чисел в Python
- Компиляция регулярных выражений
- Логирование с Logzero
- Список и кортеж в Python
- Логирование с Loguru
- Оператор «not» в Python
- Создание инструмента обнаружения плагиата
- Функция enumerate в Python
- Оптимизация памяти с __slots__
- *args и **kwargs в Python
- Присоединение элементов коллекции
- Транспонирование 2D-массива с помощью zip
- Сериализация и десериализация объектов
- Функции высшего порядка в Python
- Работа с deque из collections
- Импорт модуля из другого каталога
- Метод join() с набором
- Логирование в Python
- Оператор in в Python
- Создание пользовательской коллекции в Python
- Преобразование документов в PDF с помощью Spire.Office
- Управление ресурсами с контекстными менеджерами
- Поиск с помощью регулярных выражений
- Операторы Splat и splatty-splat
- Именованные срезы в Python
- Создание списков в Python
- Создание и инициализация объектов
- Применение функций в Python
- Метод get() в Python
- Monkey Patching в Python
- Аннотации типов в Python
- Расчет времени выполнения
- Объединение словарей в Python
- Генерация QR-кодов с Python
- Отладка утечек памяти в Python
- JSON в Python: модуль, dump, dumps, load
- Объединение словарей в Python
- Инициализация структур данных
- Работа с буфером обмена на Python
- Названия столбцов в Python таблицах
- Удаление эмодзи с помощью pandas
- GitHub в Telegram: подписка на уведомления
- Работа с библиотекой xkcd
- Статическая типизация в Python
- Генераторы в Python















