Карточка Middle GIL, потоки и процессы обновлено

Зачем в CPython GIL

Вопрос

Почему в CPython появился GIL?

Попробуйте сами

Ответьте про себя или вслух, потом откройте ответ и сверьтесь.

Показать ответ и разбор

Коротко

Управление памятью через подсчёт ссылок: счётчик меняется при каждой операции с объектом. GIL позволяет делать это без блокировки на каждом объекте, упрощает интерпретатор и C-расширения и делает однопоточный код быстрым.

Ответ

Управление памятью через подсчёт ссылок: счётчик меняется при каждой операции с объектом. GIL позволяет делать это без блокировки на каждом объекте, упрощает интерпретатор и C-расширения и делает однопоточный код быстрым.

Разбор

Цена: нет параллельного выполнения Python-байткода в потоках. Free-threaded сборка решает это через атомарные и «смещённые» счётчики ссылок и другие механизмы, с небольшими потерями в однопоточной скорости.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.