Курс 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"
- Модуль Antigravity в Python 3
- Создание словаря и множества
- Создание комплексных чисел
- Методы работы со строками в Python
- Условные выражения в Python
- Структурирование данных с Pydantic
- Объединение словарей в Python
- Основы работы со списками
- Преобразование типов данных в set comprehension
- Модуль math: основные функции
- Декоратор total_ordering для класса Point
- Оптимизация интернирования строк
- Работа с модулем glob в Python
- Метод ne для сравнения объектов
- Метод join() для объединения элементов в строку.
- Получение текущей даты в Python
- Объединение списков в Python
- Обработка исключений в Python 3
- Операторы увеличения и уменьшения в Python
- Подсчет элементов в списке с Counter
- Область видимости переменных
- Namedtuple в Python
- Аннотации типов в Python
- Вложенные генераторы в Python
- Сортировка данных с лямбда-функциями
- Поиск шаблона в строке
- Проверка строки на палиндром
- SciPy: широкий функционал для математических операций
- Итераторы с потерямиZIP
- Синхронизация потоков с time.sleep()
- Работа с каталогами в Python
- Форматирование данных с помощью pprint
- Использование super() в Python
- Синтаксис переменных цикла в Python
- Создание уникального проекта
- Область видимости переменных в Python
- Генераторы в Python
- Подсчет элементов в Python
- Генераторы в Python
- Псевдонимы в Python
- Объединение, распаковка и деструктуризация
- Работа со строками в Python.
- Копирование словарей и списков в Python
- Функция zip() в Python
- OrderedDict — упорядоченный словарь
- Управление ресурсами с контекстными менеджерами















