🆕 Что нового в Python 3.13
|
Новые фичи направлены на повышение производительности, улучшение читаемости кода и дополнительные возможности для работы с интерактивной оболочкой. Вот основные нововведения: Улучшенный интерактивный интерпретатор REPL: - Теперь поддерживает подсветку промптов, многострочное редактирование с сохранением истории, интерактивный просмотр справки по F1, навигацию по истории с помощью F2, режим вставки по F3.
- Цвета можно отключить через переменные окружения PYTHON_COLORS и NO_COLOR.
- Команды help, exit, quit теперь можно вводить без скобок.
- Появилась автоматическая расстановка отступов.
- Реализована корректная обработка вставки кода через буфер обмена, без необходимости вводить две пустые строки для разделения блоков.
- Добавлена поддержка истории на уровне блоков кода, а не отдельных строк, что позволяет легко редактировать и перезапускать целые блоки.
В полной мере новые фичи REPL пока что доступны только на macOS и Unix-подобных системах. Подробнее обо всех возможностях обновленного REPL – в этой статье. |
REPL теперь поддерживает блоки кода |
Улучшенные сообщения об ошибках: - Трассировки ошибок по умолчанию теперь цветные, настройки управляются в PYTHON_COLORS.
- Если есть скрипт с таким же именем, что и модуль, выдается подсказка о переименовании.
- Если задан неправильный ключевой аргумент функции, предлагается возможная правильная версия.
Новые возможности аннотации типов: - Параметры типов (TypeVar, ParamSpec, TypeVarTuple) теперь поддерживают значения по умолчанию.
- Добавлен TypeIs для более узкого определения типов.
- Добавлен ReadOnly для помеченных только для чтения элементов TypedDict.
Экспериментальный JIT-компилятор: - Включается при сборке с --enable-experimental-jit.
- Использует оптимизированный внутренний байт-код Tier 2 и трансляцию в машинный код.
- Зависит от LLVM, имеет режимы только интерпретатора Tier 2.
- Может ускорить выполнение некоторых программ.
Экспериментальная поддержка свободной развязки потоков: - При сборке с --disable-gil отключается глобальная блокировка интерпретатора (GIL).
- Позволяет полностью использовать параллелизм на многоядерных системах.
Прочие изменения: - iOS теперь – официально поддерживаемая платформа.
Сборщик мусора стал инкрементальным. - Удалены более 19 устаревших модулей и библиотек.
Все остальные подробности – в официальной документации.
|
Asyncio – библиотека, которая предоставляет инфраструктуру для написания параллельного кода с использованием концепции асинхронного программирования. Она позволяет эффективно обрабатывать многочисленные задачи ввода-вывода (например, сетевые операции или чтение/запись из файлов) без необходимости создавать множество потоков или процессов. Ключевые концепции asyncio: Событийный цикл (Event Loop) - Это ядро asyncio, которое отвечает за планирование и выполнение задач (корутин).
- Реализован на языке C для максимальной эффективности.
- Работает по принципу однопоточной многозадачности (single-threaded concurrency).
- Постоянно опрашивает очередь событий и выполняет соответствующие задачи.
Корутины (Coroutines) - Это специальные функции, выполнение которых можно приостанавливать на определенных точках с помощью ключевого слова await.
- Используются для написания асинхронного, событийно-ориентированного кода.
- Могут ждать асинхронные события (ввод-вывод, сигналы или другие корутины).
- Определяются с помощью async def.
Задачи (Tasks) - Представляют собой обертки над корутинами для их планирования и выполнения.
- Создаются с помощью asyncio.create_task(coroutine) или asyncio.ensure_future(coroutine).
- Задачи можно отменять, объединять с другими задачами и отслеживать на предмет исключений.
- Задачи добавляются в событийный цикл и выполняются в порядке их готовности.
Будущие объекты (Futures) - Представляют результат асинхронной операции, который может быть доступен позже.
- Задачи наследуются от класса Future и добавляют собственные методы управления.
- Могут быть использованы для координации между разными частями программы.
Транспорты и протоколы - Транспорты (sockets) отвечают за передачу данных по сети.
- Протоколы определяют, как интерпретировать эти данные (HTTP, WebSocket и др.).
- asyncio предоставляет высокоуровневые абстракции для работы с транспортами и протоколами.
Другие инструменты - Пулы для управления ограниченными ресурсами (потоки, подпроцессы).
- Синхронизаторы для координации между корутинами (Lock, Event, Condition).
- Очереди для безопасной передачи данных между корутинами.
- Сигналы для обработки внешних событий (UNIX-сигналы).
Вот как работает asyncio: - Создается событийный цикл, который будет управлять выполнением задач.
- Определяются корутины, которые выполняют некоторую работу и могут приостанавливаться на операциях ввода-вывода с помощью ключевого слова await.
- Корутины оборачиваются в задачи с помощью функции asyncio.create_task().
- Задачи планируются для выполнения в событийном цикле с помощью функции asyncio.run() или добавляются в цикл вручную.
- Событийный цикл начинает выполнять задачи по очереди. Когда задача достигает операции ввода-вывода (например, await asyncio.sleep()), она приостанавливается, и событийный цикл переключается на другую задачу.
- Когда операция ввода-вывода завершается, задача возобновляется и продолжает выполнение до следующей операции ввода-вывода или завершения.
Так asyncio позволяет эффективно использовать один поток для выполнения множества задач с операциями ввода-вывода, избегая блокировки и простоев из-за ожидания завершения этих операций. Важно отметить, что asyncio оптимален именно для I/O-bound задач (сеть, файловые операции и т. д.), и не подходит для CPU-bound операций (вычислительно-интенсивных задач), поскольку в этом случае он не сможет переключаться на другие задачи во время блокировки. Для такого рода задач лучше использовать многопоточность или многопроцессорность. Подробнее о принципах работы asyncio – в этой статье и в этом видео. |
Bytewax — это фреймворк для обработки потоковых данных и событий. Он объединяет в себе скорость Rust, простоту Python и обширные возможности, аналогичные системам Flink, Spark и Kafka Streams. Bytewax позволяет использовать привычные библиотеки Python для подключения источников данных, выполнения трансформаций со состоянием и записи в различные системы назначения с помощью встроенных коннекторов или инструментов Python. Возможности Bytewax по параллельной обработке потоков и событий делают его подходящим инструментом для решения широкого спектра задач – от перемещения данных в стиле Kafka Connect до машинного обучения в реальном времени. Кроме того, Bytewax не ограничивается только потоковыми приложениями – он также подходит для задач, где данные могут быть распределены как на входе, так и на выходе. Все возможности фреймворка подробно разобраны в этом видео. |
GPT Home – поможет превратить Raspberry Pi в голосового ИИ-ассистента типа Алексы или Nest Hub. |
Raspberry Pi с микрофоном и динамиком достаточно для создания собственного ИИ-помощника |
Relax-py – новый фреймворк для разработки веб-приложений на Python, который специально создан для работы с htmx и TailwindCSS. Он построен поверх Starlette и обладает несколькими удобными возможностями: - URL локаторы на основе функций пути позволяют определять маршруты с помощью декораторов, которые используют типовые аннотации для определения параметров маршрута. Это упрощает работу с динамическими маршрутами и обеспечивает строгую типизацию.
- Написание HTML-шаблонов с помощью Python-функций ускоряет процесс создания фронтенда.
- Вспомогательные средства для внедрения зависимостей упрощают управление состоянием и конфигурацией приложения.
- Горячая замена модулей (HMR) позволяет разработчикам видеть изменения в коде в реальном времени без необходимости перезагрузки всего приложения.
PgQueuer – предоставляет простой и производительный способ организации распределенной обработки задач в PostgreSQL. Особенности: - Очень простая интеграция с существующими Python-приложениями, использующими PostgreSQL.
- Эффективная обработка параллельных задач благодаря использованию механизма FOR UPDATE SKIP LOCKED в PostgreSQL.
- Уведомления в реальном времени о состоянии задач с помощью LISTEN/NOTIFY в PostgreSQL.
Django Harlequin позволяет запускать интегрированную среду разработки для SQL прямо из вашего терминала, используя конфигурацию базы данных Django проекта. Среди основных возможностей Harlequin – автодополнение, подсветка синтаксиса, интеграция с Git и другими инструментами. Panza – ИИ-ассистент для написания имейлов. Работает локально, обучается на ваших сообщениях и письмах для реалистичной имитации стиля. | Panza будет писать имейлы в вашем стиле |
На этом все, увидимся через неделю! |
|
|
Вы получили это письмо, потому что подписались на нашу рассылку. Если вы больше не хотите получать наши письма, нажмите здесь.
|
|
|
|