Курс 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"
- Модуль inspect
- Измерение времени выполнения
- TON Smart Challenge #2: участие и подготовка
- Flask — веб-фреймворк Python
- Метод __irshift__ для побитового сдвига вправо
- Преобразование регистра строк
- Преобразование числа в восьмеричную строку
- Big O оптимизация
- Сравнение def и lambda функций в Python
- Оптимизация памяти с помощью __slots__
- Оператор «is not» в Python
- Повторение элементов в Python
- Работа с буфером обмена на Python
- GitHub в Telegram: подписка на уведомления
- Иерархия классов в Python
- Структурирование данных с Pydantic
- Работа с collections в Python.
- Python Метод del.
- Возвращение нескольких значений через кортеж или класс
- Названия переменных
- Модуль math: основные функции
- Декоратор защиты анонимных пользователей
- Сортировка в Python
- Библиотека wikipedia для Python
- Метод rmatmul для пользовательских матриц
- Bootle — простой веб-фреймворк
- Генераторы словарей и множеств
- Непрерывная проверка в Python
- Оценка выражений генератора в Python
- Работа с множествами в Python
- Отладка в командной строке
- Работа с deque из collections
- Работа с deque из collections
- Создание директории в Python
- Работа с парами ключ-значение
- Метаклассы в Python
- Работа с утверждениями в Python
- Оптимизация строк в Python
- Оператор is в Python
- Подсчет вхождений элементов
- Синхронизация потоков с time.sleep()
- Отправка HTTP-запросов с User-Agent
- Счетчик в Python: most_common()
- Инициализация структур данных
- Обмен переменными в Jupyter















