Python стал производительнее и «многопоточнее»: GIL теперь опционален
Новости Отредактировано
В Python 3.13 можно отключить GIL, но пока функция доступна только в экспериментальном режиме. Поэтому ждем полноценного релиза фичи
10К открытий47К показов
Релиз 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К открытий47К показов