Найти в Дзене
DataLab

Когда выйдет Python 4?

Оглавление

Спустя почти 15 лет после выхода Python 3 многие задаются вопросом, когда же появится Python 4. Во время выпуска Python 3 возникли некоторые проблемы с совместимостью. В частности, зависимости многих приложений на Python 2 не обновлялись быстро (или вообще не обновлялись), что создавало значительные трудности при переходе на Python 3 для многих компаний и разработчиков.

Перенесемся в 2022 год, и мы наслаждаемся стабильным и зрелым многоцелевым языком программирования, который отлично работает и пользуется огромной поддержкой сообщества. Но когда же выйдет Python 4?

Когда будет выпущен Python 4?

Короткий ответ: неизвестно и не скоро.



Длинный ответ - ниже. Спекуляции по поводу даты выхода Python 4 ведутся уже несколько лет. Особенно после выхода Python 3.9 многие стали думать, что Python 4 может появиться в ближайшее время.

Выход Python 4 может затянуться на долгие годы, а может и вовсе не состояться, как утверждает сам основатель Python.

Переход от Python 2 к Python 3 был болезненным, поскольку язык программирования проник в слишком большое количество приложений, компаний и практически Python повсюду в нашей жизни, что усилило проблемы несовместимости. Приложения на Python зависят от тысяч библиотек Python, обновление которых требует времени со стороны их сопровождающих. Ниже приводится более подробная информация о том, когда, если вообще возможно, будет выпущен Python 4.0.

Python 4.0 и библиотеки С

Сегодня Python 3 достаточно стабилен и развит, и единственное обозримое событие, которое может привести к обновлению Python 3 до Python 4, - это несовместимость библиотек языка С, которые использует интерпретатор Python (и расширений языка С, используемых для использования их возможностей в Python) в будущем.

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

Python 4.0 и глобальная блокировка интерпретатора

Использование библиотек языка С в Python также потребовало потокобезопасного управления памятью, такого как GIL (Global Interpreter Lock). GIL делает именно то, что следует из его названия: блокирует потоки, чтобы они не могли работать одновременно (параллельно). В компьютере поток - это единица процесса, работающая на одном ядре процессора. Если несколько потоков привязаны к процессору (требуют интенсивного использования вычислительных ресурсов), то их одновременное выполнение создает проблемы с управлением ресурсами и замедляет выполнение программы.

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

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

Мы рассмотрели два события, которые могли бы спровоцировать выпуск Python 4, но оба они маловероятны в обозримом будущем, что является хорошей новостью, поскольку в настоящее время (в большинстве случаев) Python работает как горячий нож сквозь масло.

Преимущества GIL

  • В специфическом для Python контексте GIL позволяет однопоточным расширениям на языке C работать быстрее, чем в противном случае.
  • В некоторых случаях GIL также позволяет ускорить работу однопоточных приложений.
  • Высокое удобство по сравнению с другими решениями.
  • GIL защищает счетчики ссылок.
  • Преодолеть недостатки GIL можно с помощью многопроцессорной библиотеки.

Недостатки GIL

  • GIL не позволяет многопоточным приложениям CPython использовать преимущества многоядерных процессоров, которые сегодня являются нормой.
  • Многопоточные приложения не могут быть интерпретированы одновременно.
  • Относительно медленное время выполнения.
  • Проблемы с масштабируемостью из-за отсутствия многопоточности.

Удаление GIL из Python - это периодически возникающая горячая тема в сообществе разработчиков Python, и до сих пор никто не выдвинул реалистичного предложения, которое могло бы заменить Global Interpreter Lock.

Что такое Cpython или Cython?

Исходный код Python написан на языке C, который был создан в 70-х годах прошлого века. Исходный код Python, написанный на языке C, можно посмотреть в этом репозитории github.

Из статьи Cpython в Википедии:

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

Cpython или Cython - это стандартная реализация интерпретатора Python, поскольку интерпретатор Python в основном использует язык C и его библиотеки. Cpython транслирует код Python в байткод, который может быть интерпретирован компьютерами и в основном написан на языке C.

Существуют и другие варианты, хотя они не являются стандартными и не так распространены, как CPython. Это Jython (JavaPython), который транслирует код Python в байткод Java, и IronPython (C#), который транслирует Python в специфическую для Microsoft реализацию байткода.

В качестве заключения

Подводя итоги, мы обсудили маловероятный выход Python 4 и причины этого, такие как расширения языка C, используемые в Cpython, а также необходимость иметь решение для управления памятью, связанное с потоками, такое как Global Interpreter Lock.

Перевод статьи: When is Python 4 Coming Out?

Наука
7 млн интересуются