Frog Proger 29 августа 2024

🐍🚀 Python 3.13: конец эпохи GIL и новые возможности для разработчиков

Глобальная блокировка интерпретатора (GIL) долгое время ограничивала многопоточность в Python. С выходом версии 3.13 это может измениться. Разберем, что это значит для разработчиков.
🐍🚀 Python 3.13: конец эпохи GIL и новые возможности для разработчиков

Глобальная блокировка интерпретатора (GIL) долгое время сдерживала развитие Python. Однако с выходом Python 3.13 ситуация изменится. GIL можно будет сделать необязательной, но это экспериментальная функция, которая требует определенных усилий для ее отключения.

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

Почему же GIL все еще используется? В ранние годы многопоточные программы были менее распространены, и основное внимание уделялось производительности однопоточных программ.

Я создал пример, чтобы показать, как GIL влияет на производительность. Я написал скрипт, который считает количество простых чисел, используя однопоточную, многопоточную и многопроцессорную версии. В Python 3.12, где отключение GIL невозможно, многопроцессорная версия работает быстрее, поскольку использует несколько процессов. Однако многопоточная версия почти не отличается по скорости от однопоточной из-за GIL.

🐍🚀 Python 3.13: конец эпохи GIL и новые возможности для разработчиков
🐍 Библиотека питониста
Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека питониста»

В краткосрочной перспективе Python 3.13 или 3.14 предложат сборку без GIL в экспериментальном режиме. В долгосрочной перспективе цель — сделать такую сборку стандартной, сохраняя обратную совместимость. Это может занять до пяти лет.

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

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

Как это повлияет на вас, зависит от вашей области работы. Для разработчиков API отключение GIL может ускорить работу пакетов, таких как FastAPI. Для специалистов по данным и ИИ это может означать возможность параллельной обработки данных. Однако многие уже используют пакеты с реализациями на C, так что разница может быть незначительной.

В любом случае, будущее GIL обещает быть интересным. Но пока отключение GIL остается экспериментальной функцией, не стоит полагаться на нее в производственной среде. Есть и другие способы оптимизации производительности Python, такие как использование асинхронного программирования с помощью asyncio.

***

Основы программирования на Python

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

На курсе вы научитесь:

  • Основам синтаксиса Python и структуре данных.
  • Созданию простых программ и скриптов.
  • Использованию библиотек для работы с данными.
  • Основам многопоточности и асинхронного программирования.
  • Применению полученных знаний на практике в реальных проектах.

МЕРОПРИЯТИЯ

Комментарии

ВАКАНСИИ

Добавить вакансию
Go-разработчик
по итогам собеседования

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ