Предновогодний привет, Хабр! Ну что, самое время подводить итоги и мечтать о прекрасном? А так как у нас стартует год Питона Змеи, поговорим про 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 «из коробки». Всех обняли!
Комментарии (5)
ritorichesky_echpochmak
31.12.2024 13:17BeeWare, PySide
и Kivy в ту же степь... но вот если бы бидонисты уделяли немного больше внимания мобилкам, он бы отлично попёр ту же жабу оттуда. Но там всё ещё всё сильно сыровато и обмазано жирным Qt покрытым проблемами лицензионного плана
fgeo
Уже не первый раз замечаю, что использование jupiter вместо jupyter является отличным маркером некомпетентности.
MaximML
Наверное опечатка. Статью подготовило много людей из разной предметной области. Поэтому довольно широкий взгляд на применение Python