Курс 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"
- Измерение времени выполнения кода
- Метод count() для списка
- Получение значений из словарей
- Декоратор @override
- Удаление ссылок в Python
- Оптимизация памяти с __slots__
- Работа со слайсами
- Методы split() и join() — Python строк.
- Форматирование вывода с F-строками
- Библиотека sh: удобные команды терминала
- Работа с IP-адресами в Python
- Показ всплывающих окон Tkinter
- Методы в Python
- Python Тесты и Гайды
- Создание новых функций через partial
- Удаление элементов из списка в Python
- Работа с CSV файлами в Python
- Создание обратного итератора
- Получение текущей даты и времени
- Декораторы в Python
- Использование super() в Python
- Конкатенация строк с методом join()
- Установка и использование библиотеки google
- Magic Commands — улучшение работы с Python
- Преобразование данных в Python
- Python OrderedDict и fromkeys() — работа с словарями
- Инверсия списка/строки в Python
- Изменение объектов в Python
- Инициализация структур данных
- Вывод букв строки в Python
- Повторение и перенос строки
- Просмотр файла в Jupyter Noteboo
- Отрицательные индексы списков в Python
- Цикл for в Python
- Форматирование строк с % в Python
- Списковое включение в Python
- Просмотр внешнего файла в Python
- Протокол управления контекстом
- Counter() — подсчет элементов
- Форматирование строк в Python
- Изменение регистра данных
- Профилирование кода
- Подчеркивание в REPL
- Измерение времени выполнения кода
- Асинхронное программирование с asyncio
- Работа с пакетами
- Логирование с Logzero: ротация файла
- Определение размера папок в Python















