Что важно знать
- Память освобождается при обнулении счётчика ссылок; циклы ищет отдельный сборщик.
- Мелкие целые и некоторые строки кэшируются.
- Профилирование до оптимизации: cProfile, py-spy, line_profiler.
Подсчёт ссылок и сборщик циклов, байткод, производительность.
Практика. Профилировать медленный скрипт, найти узкое место и ускорить минимум в 3 раза без смены алгоритма на C.
Список — массив: доступ по индексу и append — O(1), вставка в начало и поиск in — O(n).
Сначала измерить, потом оптимизировать. cProfile (+ snakeviz) — время по функциям локально. py-spy — сэмплирующий профилировщик, подключается к работающему процессу без…
Поверхностная копия создаёт новый контейнер со старыми элементами, глубокая — копирует всё рекурсивно.
CPython — интерпретатор байткода с динамической типизацией: каждая операция проверяет типы, числа — объекты в куче. Ускорение: векторизация (NumPy, pandas — циклы на C)…
В CPython основной механизм — подсчёт ссылок: у каждого объекта счётчик, и когда он падает до нуля, объект освобождается сразу. Циклические ссылки (a ссылается на b, b на a)…
__slots__ = ("x", "y") заменяет у экземпляров словарь __dict__ на фиксированные ячейки: объект занимает в несколько раз меньше памяти, доступ к атрибутам чуть быстрее, а добавить…
На живом собеседовании sotto слышит вопрос интервьюера и показывает короткий ответ и план. Оставьте контакт — пришлём доступ и промокод.