Фонд Python выпустил Python 3.13 в начале октября 2024 года. Главное техническое изменение этой версии — появление режима «Free-threaded», определённого в реализации PEP 703, который отключает GIL (Global Interpreter Lock).
Простыми словами
До сих пор интерпретатор Python работал как зал, по которому передают единственный микрофон: потоков могло быть несколько, но говорил лишь один за раз, поскольку GIL не давал им одновременно исполнять байт-код. На машине с несколькими ядрами это означало, что часть доступной мощности оставалась незадействованной, как только программа пыталась считать параллельно. Python 3.13 делает эту блокировку необязательной: интерпретатор теперь можно собрать так, чтобы вычислительная нагрузка распределялась по всем доступным физическим ядрам, не создавая блокировки. Оговорка при этом весома: возможность предлагается как экспериментальная, GIL по умолчанию остаётся активным, а библиотеки, написанные на C, требуют доработки. Это начало перехода, а не мгновенная смена режима.
Карточка версии
| Параметр | Значение |
|---|---|
| Версия | Python 3.13 |
| Издатель | фонд Python |
| Публикация | начало октября 2024 года |
| Главное техническое изменение | появление режима «Free-threaded» |
| Спецификация | PEP 703 — Making the Global Interpreter Lock Optional in CPython |
| Технический эффект | отключение GIL (Global Interpreter Lock) |
| Способ применения | сборка интерпретатора разработчиком |
| Статус | экспериментальный — GIL по умолчанию остаётся активным |
| Требование к экосистеме | доработка библиотек, написанных на C |
| Целевой охват | выполнение потоков по-настоящему параллельно на многоядерных архитектурах |
Техническое пояснение
1. Что блокировал GIL — Исторически GIL не позволял нескольким потокам одного и того же интерпретатора Python одновременно исполнять байт-код.
2. Цена на многоядерных процессорах — Это ограничение сильно снижало производительность параллельных приложений на многоядерных процессорах.
3. Что даёт режим Free-threaded — В этой версии у разработчиков есть возможность собрать интерпретатор так, чтобы вычислительная нагрузка распределялась по всем доступным физическим ядрам, не создавая блокировки.
До и после
| Аспект | Интерпретатор с GIL | Режим Free-threaded (Python 3.13) |
|---|---|---|
| Исполнение байт-кода | одновременно только один поток одного интерпретатора | потоки по-настоящему параллельно |
| Задействованные ядра | производительность параллельных приложений на многоядерных процессорах сильно ограничена | вычислительная нагрузка распределена по всем доступным физическим ядрам |
| Блокировка | глобальная блокировка исполнения байт-кода | блокировка не возникает |
| Включение | поведение по умолчанию | отдельная сборка интерпретатора, как экспериментальная возможность |
| Библиотеки, написанные на C | прежнее поведение | требуется доработка |
Причинная цепочка
GIL, исторически присутствующий в интерпретаторе → одновременно байт-код исполняет только один поток → производительность параллельных приложений на многоядерных процессорах сильно ограничена → PEP 703: сделать блокировку необязательной → Python 3.13 вводит режим Free-threaded → интерпретатор можно собрать так, чтобы распределять вычисления по всем доступным физическим ядрам → доработка библиотек, написанных на C → переход экосистемы Python к полной многоядерной оптимизации
Пределы и охват
Хотя эта возможность предлагается как экспериментальная (GIL по умолчанию остаётся активным) и требует доработки библиотек, написанных на C, данный выпуск начинает переход экосистемы Python к полной многоядерной оптимизации.
Источники
Ссылки, проверенные в ходе фактологического аудита в августе 2026 года: это страницы,
с которыми сверялись утверждения настоящего бюллетеня.
