Trio: дружественный Python-библиотека для асинхронной конкурентности и ввода-вывода
Цель проекта Trio — создание качественной, лицензируемой библиотеки ввода-вывода для Python, основанной на async/await. Как и все асинхронные библиотеки, её основная цель — помочь вам писать программы, выполняющие несколько задач одновременно с параллелизованным вводом-выводом. Например, веб-паук, который хочет параллельно загрузить много страниц, веб-сервер, который должен одновременно обрабатывать множество загрузок и подключений websocket, или процесс-менеджер, контролирующий несколько дочерних процессов. По сравнению с другими библиотеками, Trio стремится выделиться благодаря пристальному вниманию к удобству использования и корректности. Конкурентность — сложная тема; мы стараемся сделать её легкой для достижения правильного результата.
Trio разработан с использованием последних возможностей Python, вдохновленный многими источниками, в частности, библиотекой Curio от Dave Beazley. Результатом стала значительно более простая конструкция по сравнению со старыми конкурентами, такими как asyncio и Twisted, но с той же эффективностью. Trio — идеальная Python-библиотека ввода-вывода, которую я всегда хотел; я считаю, что она делает создание программ, ориентированных на ввод-вывод, более лёгким, менее подверженным ошибкам и просто более приятным. Возможно, вы почувствуете то же самое.
Этот проект молодой и все ещё в некоторой степени экспериментальный: общая архитектура надёжна, а существующие функции полностью протестированы и документированы, но могут встречаться отсутствующие функции или недоработки. Мы рекомендуем вам его использовать, но вы должны прочитать и подписаться на выпуск #1, чтобы быть в курсе любых изменений, которые могут повлиять на совместимость.
Основные характеристики:
-
Поддерживаемые среды: Тестируется на
Python: 3.9+ (CPython и PyPy)
Windows, macOS, Linux (glibc и musl), FreeBSD
Другие среды также могут работать; попробуйте их.
Установка:
python3 -m pip install -U trio(или на Windows, возможно,py -3 -m pip install -U trio). Компилятор не требуется.Руководство пользователя и справочник: https://trio.readthedocs.io
Отслеживание ошибок и исходный код: https://github.com/python-trio/trio
Чат в реальном времени: https://gitter.im/python-trio/general
Форум обсуждения: https://trio.discourse.group
Лицензия: MIT или Apache 2, выбирайте сами
Руководство по участию в проекте: https://trio.readthedocs.io/en/latest/contributing.html
Кодекс поведения: От участников проекта ожидается соблюдение нашего кодекса поведения во всех пространствах проекта.
Популярное, но полное руководство по Trio:
- Учебник
- Полезные библиотеки Trio
-
Основные возможности Trio
- Запуск Trio
- Общие принципы
- Время и часы
- Отмена и таймауты
- Задачи позволяют выполнять несколько операций одновременно
- Хранилище данных локального уровня задач
- Синхронизация и обмен данными между задачами
- Примечания по асинхронным генераторам
- Потоки (если нужно)
- Интерактивная отладка
- Исключения и предупреждения
- I/O в Trio
-
Тестирование с помощью
trio.testing -
Просмотр и расширение Trio с помощью
trio.lowlevel- Отладка и инструментарий
- Запуск процессов низкого уровня
- Примитивы ввода-вывода низкого уровня
- Глобальное состояние: системные задачи и локальные переменные выполнения
- Токены Trio
- Запуск потоков
- Более безопасная обработка KeyboardInterrupt
- Сон и пробуждение
- API задач
- Использование "режима гостя" для запуска Trio поверх других циклов событий
- Передача активных объектов корутины между запустителями корутин
- Архитектура и внутренности
-
История релизов
- Trio 0.29.0 (2025-02-14)
- Trio 0.28.0 (2024-12-25)
- Trio 0.27.0 (2024-10-17)
- Trio 0.26.2 (2024-08-08)
- Trio 0.26.1 (2024-08-05)
- Trio 0.26.0 (2024-07-05)
- Trio 0.25.1 (2024-05-16)
- Trio 0.25.0 (2024-03-17)
- Trio 0.24.0 (2024-01-10)
- Trio 0.23.2 (2023-12-14)
- Trio 0.23.1 (2023-11-04)
- Trio 0.23.0 (2023-11-03)
- Trio 0.22.2 (2023-07-13)
- Trio 0.22.1 (2023-07-02)
- Trio 0.22.0 (2022-09-28)
- Trio 0.21.0 (2022-06-07)
- Trio 0.20.0 (2022-02-21)
- Trio 0.19.0 (2021-06-15)
- Trio 0.18.0 (2021-01-11)
- Trio 0.17.0 (2020-09-15)
- Trio 0.16.0 (2020-06-10)
- Trio 0.15.1 (2020-05-22)
- Trio 0.15.0 (2020-05-19)
- Trio 0.14.0 (2020-04-27)
- Trio 0.13.0 (2019-11-02)
- Trio 0.12.1 (2019-08-01)
- Trio 0.12.0 (2019-07-31)
- Trio 0.11.0 (2019-02-09)
- Trio 0.10.0 (2019-01-07)
- Trio 0.9.0 (2018-10-12)
- Trio 0.8.0 (2018-10-01)
- Trio 0.7.0 (2018-09-03)
- Trio 0.6.0 (2018-08-13)
- Trio 0.5.0 (2018-07-20)
- Trio 0.4.0 (2018-04-10)
- Trio 0.3.0 (2017-12-28)
- Trio 0.2.0 (2017-12-06)
- Trio 0.1.0 (2017-03-10)
- Содействие проекту Trio и связанным проектам
- Подготовка к выпуску
- Кодекс поведения
Индексы и таблицы
© 2017 Nathaniel J. Smith
Licensed under the MIT License.
https://trio.readthedocs.io/en/v0.29.0/index.html