Предновогодний привет, Хабр! Ну что, самое время подводить итоги и мечтать о прекрасном? А так как у нас стартует год Питона Змеи, поговорим про Python.
Ниже собрали мнения экспертов цифровой экосистемы МТС: обсудили, чем был интересен релиз 3.13 и чего ждать от 3.14, какие у Python перспективы, а с чем возникают сложности. По традиции ждем вас в комментариях, присоединяйтесь к обсуждению. И с наступающим!
Что нам готовит релиз 3.13
В прошлом году был представлен новый релиз Python 3.13 и уже успел выйти 3.13.1. Давайте посмотрим, что ждет нас дальше.
Экспериментальный JIT-компилятор
В Python 3.13 JIT-компилятор использует многоуровневую архитектуру:
-
Tier 1: байт-код, представляющий начальную фазу выполнения. Уже получил улучшения производительности.
-
Tier 2: часто выполняемый байт-код (hot code) переводится во внутреннее промежуточное представление (IR).
-
Optimization Phase: перед тем как IR уровня 2 интерпретируется или преобразуется в машинный код, применяются оптимизации — распространение констант и устранение мертвого кода.
-
Tier 2 Interpreter: используется в основном для отладки на ранних стадиях оптимизации. Его можно включить с помощью —enable-experimental-jit=interpreter.
-
JIT Compilation: когда JIT включен, оптимизированный IR уровня 2 переводится в машинный код, который выполняется напрямую CPU.
Чтобы включить поддержку JIT-компилятора в Python 3.13, при сборке нужно указать флаг —enable-experimental-jit. Его доступные значения:
-
yes (по умолчанию): включает сборку с JIT. Во время выполнения JIT можно отключить, используя переменную окружения PYTHON_JIT=0. Для Windows используется опция —experimental-jit.
-
yes-off: компилирует с поддержкой JIT, но оставляет его отключенным по умолчанию. Чтобы включить JIT, используйте PYTHON_JIT=1. Для Windows — опция —experimental-jit-off.
-
interpreter: включает интерпретатор Tier 2, но отключает JIT. Предназначено, по всей видимости, для отладки. Для Windows — опция —experimental-jit-interpreter.
-
no: то же самое, что не устанавливать флаг при сборке.
Недавно появилась возможность включить экспериментальную фичу при помощи Conda (conda install python-jit), но только для x86_64.
Экспериментальное отключение GIL
Введена экспериментальная возможность отключения GIL при сборке с флагом --without-gil
. Нововведением можно управлять через переменную окружения PYTHON_GIL. До применения в продакшен-системах еще далеко (а код потребует больше внимательности от разработчика), но озвучены оптимистичные планы. Также есть возможность воспользоваться сборкой из conda-forge — conda install python-freethreading.
Что было еще интересного
-
Изменение работы функции locals().Поведение
locals()
изменено для оптимизированных областей видимости. -
Включение библиотеки mimalloc. В состав по умолчанию включена измененная версия mimalloc с системой распределения памяти, открытой Microsoft и демонстрирующей хорошую производительность. Она опциональна, но включена, если поддерживается платформой, и обязательна при сборке «без GIL».
-
Оптимизация docstring. В Python 3.13 строка документации была оптимизирована с точки зрения использования памяти. Ведущие пробелы теперь удаляются — это уменьшает общий объем используемой памяти и размер .pyc-файлов. Может показаться, что изменение незначительное. Но на проектах с обширными строками документации оно поможет заметно сэкономить память.
-
Изменения в модулях:
-
в
dbm
появился новый бэкендdbm.sqlite3
, который по умолчанию использует SQLite для работы с новыми файлами; -
os
теперь включает функции для работы с таймером через файловые дескрипторыtimerfd
; -
в
copy
появилась новая функцияcopy.replace()
; -
для
random
реализован интерфейс командной строки.
-
-
Обновления в системе типов:
-
Добавлена поддержка указания значений по умолчанию для параметров типов — typing.TypeVar, typing.ParamSpec и typing.TypeVarTuple. Например: ‘T = TypeVar(«T», default=int)’.
-
Введена новая аннотация typing.TypeIs. Она уточняет типы, а еще — интуитивно понятнее, чем typing.TypeGuard.
-
Можно использовать аннотацию typing.ReadOnly для обозначения элементов TypeDicts, предназначенных только для чтения.
-
-
Удаление устаревших модулей. Из стандартной библиотеки исключены:
aifc, audioop, chunk, cgi, cgitb, crypt, imghdr, mailcap, msilib, nis, nntplib, ossaudiodev, pipes, sndhdr, spwd, sunau, telnetlib, uu, xdrlib и lib2to3
, объявленные устаревшими еще в 3.11. -
Улучшенный интерактивный интерпретатор REPL. Поддерживает многострочное редактирование, сохранение и просмотр истории, цветовое оформление трассировок. Включает более удобный режим работы с большими блоками кода и интерактивную справку.
-
Работа с платформами:
-
Прекращена поддержка macOS версий 10.9–10.12.
-
Введена начальная поддержка iOS и Android, классифицированная как Tier 3. На этом уровне обеспечивается стабильная сборка и сопровождение, но связанные с платформой сбои не блокируют выпуск релиза.
-
Поддержка
wasm32-wasi
переведена на Tier 2. Сбои блокируют релиз и исправляются (или откатываются вызывающие их изменения) в течение 24 часов. Официальная поддержкаwasm32-emscripten
прекращена.
-
Сразу после релиза началось альфа-тестирование Python 3.14. Следим за новостями!
Чего ждать от Python в новом году
От новой версии Python в 2025-м мы будем ждать того же, что и в последние три года, — ускорения, No GIL и полноценного JIT-компилятора. В Python каждый год завозят возможности для enterprise-разработки — это и описание входных типов c версии 3.5, и Data Classes с 3.7. Поэтому он все больше появляется на продакшне, писать сложные программы в командной разработке теперь гораздо удобнее.
А вот проект Faster CPython слегка забуксовал. Core-разработчики столкнулись с большим количеством сложностей и при реализации JIT-компилятора в C-API. Нужно не только все ускорить, но и ничего не поломать.
Так что же нам принесет Python 3.14 в 2025 году? Вот основные улучшения:
-
Трассирующий JIT, который будет затрагивать несколько инструкций подряд. Это следующий шаг по внедрению JIT-компилятора в Python. Другими словами, вместо большого количества управляющих команд в предыдущих версиях Python создаются суперинструкции. Интерпретатор сможет снизить объем работы и быстрее выполнять код.
-
Ленивое вычисление аннотаций и аннотации по требованию. Аннотации — это только подсказки, и интерпретатора они не интересуют, но все же они давали нагрузку при вычислениях. В мае 2023 года наконец договорились, как с ними правильно работать: с версии 3.14 аннотации будут вычисляться только по требованию. То есть мы сможем использовать их без лишнего оверхеда и необходимости в forward‑declaration.
-
Asyncio станет на 10% быстрее. Это позволит уменьшить потребление памяти.
-
Чтение небольших файлов ускорится на 15%. Речь о файлах, которые умещаются в кеше операционной системы.
-
Ускорится работа встроенных функций min и max. Это связано с переходом к новому быстрому методу vectorcall вместо старого tp_call.
-
Поддержка рекурсивного обхода в функциях: Path.copy(), Path.copy_into(), Path.move(), Path.move_into() и Path.scandir().
Будут и другие улучшения, которые уже очень не терпится протестировать.
Какие у Python перспективы и почему его вообще стоит осваивать
Python — высокоуровневый язык программирования общего назначения. Все больше людей котрибьютят в его экосистему:
Думаю, популярность Python обусловлена его исторически сложившимся лидировнием в нескольких направлениях. Вот некоторые из них:
-
ML. Молодые ученые всего мира обмениваются jupyter notebook — это уже стало промышленным стандартом.
-
Data Scientist. Используют Python благодаря огромному количеству высокопроизводительных библиотек.
-
Разработка backend-сервисов. В Python есть уже несколько замечательных проектов фреймворков микросервисов — это и FastAPI, и Litestar, собравшие много тысяч звезд на GitHub, и фреймворк сервисов Django.
На мой взгляд, Python — самый перспективный ЯП. К тому же это язык высокого уровня, так что осваивать его одно удовольствие. Он продолжит завоевывать сердца молодых ученых и разработчиков, в том числе благодаря таким преимуществам:
-
Легкость чтения. В синтаксисе Python уже заложена простота и читабельность кода. Это делает язык подходящим для быстрой и эффективной разработки.
-
Впечатляющее количество модулей, библиотек и фреймворков. Многие из них разработаны крупными корпорациями, в которые инвестированы огромные финансовые и человеческие ресурсы.
-
Легкость входа и передачи.
Выше я перечислила преимущества Python для разработчиков, но на популярность ЯП еще влияет бизнес. Убеждена, что Python — лучший друг бизнеса, ведь он выгоден для большинства случаев. Один Python-разработчик пишет фичи с такой же скоростью, что и 3–4 Java-разработчика. Конечно, на Python пока не будешь раздавать видеочанки для стриминговых сервисов, но с 90% задач он справляется.
Python не собирается терять позиции в мире ИИ и машинного обучения. Библиотеки вроде TensorFlow, PyTorch и Scikit-learn
продолжают развиваться и обновляться и помогают разработчикам создавать более хитроумные модели. В ближайшие годы мы увидим, как Python будет использоваться еще шире в предсказательной аналитике, автоматизации с помощью ИИ и обработке естественного языка.
При этом Python по-прежнему остается незаменимым инструментом в анализе данных. Библиотеки Pandas и NumPy
совершенствуются и предлагают сложные возможности для анализа и обработки данных. В 2025 году Python будет применяться в анализе медицинских данных в здравоохранении, прогнозировании рыночных тенденций в финансах и не только.
Библиотеки, такие как Qiskit
, делают квантовое программирование доступным и открывают новые возможности в криптографии и вычислительной химии. Этот ЯП участвует и в развитии IoT: MicroPython и CircuitPython
помогают программировать микроконтроллеры, разрабатываются эффективные и масштабируемые системы. Python применяется в умных домах, промышленной автоматизации и носимых устройствах.
В какие новые сферы придет Python
Python занял первое место по популярности по версии GitHub в 2024 году. И хотя может показаться, что дальше расти некуда, потенциал все еще огромен. Как эксперт в машинном обучении, отмечу перспективные направления применения Python в этой области.
Python стал стандартом де-факто для разработки ML-решений, и в 2025 году сфера его применения будет расширяться вместе с развитием машинного обучения. Python и Machine Learning уже используются во многих областях. И вот ключевые индустрии, где их влияние может значительно вырасти:
Медицина. Сегодня Python применяется в решениях для диагностики и лечения: от анализа медицинских данных и изображений до прогнозных моделей на компьютерах врачей. Открываются возможности для масштабирования уже имеющихся решений, особенно перспективна область самодиагностики. Яркий пример — приложение для анализа фотографий родинок и выявления меланом, применяющее сверточную нейронную сеть на Python-фреймворках. Думаю, в 2025 году появится еще больше решений для самодиагностики с использованием машинного обучения на Python.
Космическая отрасль. Космос генерирует колоссальные объемы данных, требующих анализа, а он выполняется на Python благодаря его эффективным библиотекам. Особенно перспективно развитие распределенных вычислений среди энтузиастов, занимающихся анализом данных.
Робототехника. Сейчас разработка гуманоидных роботов — глобальный тренд. Практически во всех используются нейросетевые технологии. Развивается и направление складских роботов. В основе передовых решений лежат облачные вычисления на мощных компьютерах и сетевое управление каждым. Значительная часть кода, отвечающего за алгоритмы и навигацию, написана на Python. Эта сфера тесно связана со следующей.
Edge-устройства. Перенос вычислений из облака на носимые устройства развивается уже несколько лет и продолжает набирать обороты. Все больше вычислений будет выполняться непосредственно на устройствах. Этому способствуют глобальная оптимизация Python, его ускорение в новых версиях, совершенствование существующих библиотек и алгоритмов. Важно понимать, что под капотом Python часто работает эффективный код на других языках программирования. Так реализованы Scikit-learn, NumPy и так далее. Поэтому потенциал применения Python растет с появлением новых подобных решений. Для вычислений на устройствах уже есть специальные библиотеки — например, для носимых устройств и роботов MicroPython, работающая на низком программном уровне.
Современные генеративные модели. Например, проект llama.cpp позволяет запускать большие языковые модели даже на CPU.
Лидерство Python на GitHub влияет и на развитие больших языковых моделей. Чем популярнее ЯП, тем больше проектов на нем создается. Значит, данных для обучения LLM-моделей программированию тоже станет больше и генерируемый ими код будет качественнее.
МТС уже выпустила в Open Source генеративные модели для кода. В будущем их будет проще запускать на локальных компьютерах.
По всем этим причинам Python по-прежнему остается перспективным. Осваивайте ЯП в 2025-м и следите за его применением в Machine Learning.
Какие сложности при работе с Python есть сейчас и решат ли их в новом году
Несмотря на огромную популярность, у Python есть проблемы — разработчики постоянно с ними сталкиваются. Основные из них:
Невысокая производительность по сравнению с компилируемыми языками. Это связано с тем, что Python — интерпретируемый ЯП. Он медленнее в некоторых задачах, особенно там, где нужны интенсивные вычисления. Сейчас для критически важных участков кода разработчики могут использовать библиотеки, написанные на более быстрых языках — C (C++), Rust. Ждем, что будущие версии Python оптимизируют для повышения скорости выполнения.
Глобальная блокировка интерпретатора (GIL). GIL ограничивает возможности многопоточного выполнения в Python. Это может быть проблемой для приложений, которые требуют интенсивной многопоточности. Сейчас ведутся работы над ее улучшением в Python, хотя полное устранение GIL остается сложной задачей. Сборку без блокировки в экспериментальном режиме предложат в Python 3.13 (уже доступно) и 3.14.
Высокое потребление памяти. Python использует больше памяти по сравнению с некоторыми другими ЯП. Это может быть проблемой для ресурсоемких приложений. Решение тут скорее отдано на откуп разработчикам. Программисты могут оптимизировать код, используя генераторы и другие техники, чтобы снизить потребление памяти.
Ограниченные возможности для мобильной разработки. Python не основной язык для этой задачи, но сейчас развиваются проекты, которые позволяют создавать мобильные приложения на Python — например, BeeWare, PySide. Так что, возможно, ситуация изменится.
На этом все. Спасибо, что читали! В новом году хочется пожелать вам интересных задач, закрытых спринтов, отсутствия багов, быстрого Python «из коробки». Всех обняли!
ссылка на оригинал статьи https://habr.com/ru/articles/870438/
Добавить комментарий