HarmonyFidelisHarmonyFidelis
Войти
НовостиКрупные проектыУчастникиАкадемия

Python 3.13: GIL становится необязательным (экспериментальный режим free-threading)

Версия Python 3.13 вводит режим Free-threaded, позволяющий выполнять потоки по-настоящему параллельно на многоядерных архитектурах.

Source: peps.python.org

Python 3.13: GIL становится необязательным (экспериментальный режим free-threading)

Фонд 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 года: это страницы,
с которыми сверялись утверждения настоящего бюллетеня.

  1. PEP 703 — Making the Global Interpreter Lock Optional in CPython
  2. What's New In Python 3.13 — официальная документация
  3. Python 3.13.0 release — python.org