Получить доступ

Что меняет сборка Python без GIL (free-threaded)?

SeniorКонкурентностьPython >=3.13
Ещё спрашивают так:
  • Уберут ли GIL из Python?
  • Что такое PEP 703?
Коротко

Отдельная сборка CPython (python3.13t) без GIL: потоки выполняют Python-код по-настоящему параллельно на разных ядрах. В 3.13 — экспериментальная, в 3.14 — официально поддерживаемая, но не по умолчанию. Цена: медленнее однопоточный код, C-расширения должны объявить совместимость.

  • Подсчёт ссылок стал смещённым и атомарным, аллокатор — mimalloc
  • Расширение без поддержки при импорте снова включает GIL
  • Гонки в пользовательском коде никуда не делись — блокировки нужны

А ещё Для вычислений в потоках выигрыш почти линейный по ядрам

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

Зачем. GIL не даёт потокам выполнять Python-код параллельно, поэтому вычисления распараллеливали процессами — с ценой pickle и памяти. Особенно мешало это в ML и научных расчётах.

Как устроено без GIL:

  • смещённый подсчёт ссылок — поток-владелец объекта меняет счётчик без атомарных операций, остальные — атомарно;
  • бессмертные объекты (None, малые числа) не считают ссылки вовсе;
  • встроенные коллекции защищены мелкими блокировками на объект;
  • аллокатор mimalloc, потокобезопасный.

Цена: однопоточный код медленнее (в 3.13 — до 40%, в 3.14 — около 5–10%), памяти больше. C-расширения должны быть пересобраны и помечены как безопасные; иначе интерпретатор при их импорте возвращает GIL.

Статус: 3.13 — экспериментальная сборка (PEP 703); 3.14 — признана поддерживаемой (PEP 779), но стандартная сборка по-прежнему с GIL. Решение о переходе по умолчанию — позже.

Для разработчика: код, полагавшийся на «атомарность благодаря GIL», может сломаться; блокировки и очереди — обязательны.

Что хотят услышать

  • Что даёт отсутствие GIL.
  • Технические изменения: подсчёт ссылок, блокировки коллекций.
  • Цена и статус по версиям.

Связанные вопросы

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем