Курс 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"
- Работа с JSON данными в Python
- Нан-рефлексивность в Python
- Цикл for в Python
- Проверка подстроки в строке с помощью in
- Метод rsub для пользовательских чисел
- Переворот списка в Python
- Счетчик ссылок в Python
- Комментарии в Python
- Вычисление разности множеств в Python
- Вывод баннеров
- Профилирование данных с Pandas.
- Округление чисел с помощью round
- Изменение логики работы с временем
- Проверка условий в Python
- Создание тестовых данных с Faker
- Структуры данных в Python
- Преобразование range в итератор
- Расширение операции побитового «и» в Python
- Установка и обучение ChatterBot
- Динамическая типизация в Python
- Форматирование строк в Python
- Моржовый оператор в Python 3.8
- Просмотр атрибутов и методов класса
- Генераторы в Python
- Форматирование строк с % в Python
- Работа с модулем Calendar
- Запрос пароля с помощью getpass
- Работа с датами в Python
- Расчет времени выполнения
- Цикл for в Python
- Область видимости переменных
- Удаление специальных символов
- Условные выражения в Python
- Генерация UUID в Python
- Операторы сравнения в Python
- Сортировка и разворот списка
- Ускорение выполнения кода в Python
- Преобразование объекта в строку
- Обработка исключений в Python
- Конвертация коллекций в Python.
- Генератор чисел Фибоначчи
- Обновление данных через PUT запрос
- Распаковка элементов массива
- Рекурсия для обращения строки
- Получение текущей даты и времени с помощью datetime
- Подсчет элементов в Python















