Игра Яндекс Практикума
Игра Яндекс Практикума
Игра Яндекс Практикума

Python стал производительнее и «многопоточнее»: GIL теперь опционален

Новости Отредактировано

В Python 3.13 можно отключить GIL, но пока функция доступна только в экспериментальном режиме. Поэтому ждем полноценного релиза фичи

10К открытий46К показов
Python стал производительнее и «многопоточнее»: GIL теперь опционален

Релиз Python 3.13 принес с собой значительное новшество — возможность отключения Global Interpreter Lock (GIL).

Пока что функция доступна в экспериментальном режиме, но уже сейчас она открывает новые горизонты для многопоточной обработки данных в Python.

Что такое GIL?

GIL — это механизм, который используется интерпретатором CPython для того, чтобы только один поток мог выполнять байт-код Python в каждый момент времени. Это ограничение значительно влияет на производительность многопоточных приложений, особенно на многоядерных системах.

Экспериментальный режим

В версии Python 3.13 появилась возможность отключения GIL, что позволяет потокам работать более параллельно.

Эта функция доступна при установке Python с опцией --disable-gil, а также может управляться с помощью переменной окружения PYTHON_GIL или через командную строку с опцией -X gil.

Производительность с и без GIL

Для демонстрации различий в производительности был использован простой Python-скрипт, который вычисляет факториалы чисел с использованием одного потока, нескольких потоков и нескольких процессов.

Результаты показали, что при отключении GIL многопоточные задачи выполняются значительно быстрее, хотя однопоточные и многопроцессорные задачи могут демонстрировать небольшое снижение производительности.

Отметим, что отключение GIL — это важный шаг вперед для Python, который приближает язык к более эффективной работе в многопоточных средах.

В то же время, как и любая экспериментальная функция, она требует дальнейшего тестирования и доработки. Однако уже сейчас видно, что Python движется в сторону улучшения производительности и гибкости для разработчиков.

Следите за новыми постами
Следите за новыми постами по любимым темам
10К открытий46К показов