Python runtime: mutability, hashability, GIL и GC
Какие базовые runtime-вопросы по Python часто идут после алгоритмической задачи?
Ответить самому
Сначала сформулируйте ответ как на собеседовании, затем откройте разбор и оцените себя.
Короткий ответ
Нужно различать mutable/immutable объекты, hashability для dict/set, влияние GIL на CPU-bound threads и роль reference counting плюс cyclic GC.
Полный разбор
Mutable объекты можно менять на месте, immutable создают новое значение при изменении. Hashable объект должен иметь стабильный hash и корректное equality-поведение, поэтому list/dict/set не подходят как ключи dict, а tuple подходит только если все элементы hashable.
GIL в CPython ограничивает параллельное исполнение Python bytecode потоками, но не отменяет race conditions и полезность threads для I/O. Память в CPython в основном освобождается reference counting, а отдельный cyclic GC нужен для циклов ссылок, которые счетчик сам не разорвет.