C-расширение работает через Python C API и может обращаться к памяти объектов и собственному глобальному состоянию. Историческая опора на GIL делает переход к свободным потокам нетривиальным.
Как под капотом устроены расширения на C (C Extensions) и почему они мешают внедрению No-GIL?
C-расширение работает через Python C API и может обращаться к памяти объектов и собственному глобальному состоянию. Историческая опора на GIL делает переход к свободным потокам нетривиальным.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
C-расширение работает через Python C API и может обращаться к памяти объектов и собственному глобальному состоянию. Историческая опора на GIL делает переход к свободным потокам нетривиальным.
Нужно проверить конкурентный доступ к нативным кешам, счётчикам и структурам, безопасное получение ссылок и обход контейнеров. Отсутствие явных Python-потоков в коде расширения не доказывает его безопасность. Для free-threaded сборки расширение объявляет поддержку соответствующим API, но такое объявление не заменяет аудит и синхронизацию. Несовместимое расширение может привести к включению GIL. Поэтому задача не сводится к одной правке интерпретатора: экосистема библиотек должна соблюдать новые требования.
Источник: docs.python.org.