Целью проекта Trio является создание качественной лицензированной библиотеки асинхронного/ожидающего ввода-вывода для Python. Как и все асинхронные библиотеки, ее основная цель — помочь вам писать программы, которые выполняют несколько действий одновременно с помощью параллельного ввода-вывода . Веб-паук, который хочет получать множество страниц параллельно, веб-сервер, которому необходимо одновременно манипулировать множеством загрузок и соединений через веб-сокеты, супервизор процессов, контролирующий несколько подпроцессов... и тому подобное. По сравнению с другими библиотеками Trio пытается отличиться одержимым вниманием к удобству использования и правильности . Параллелизм — это сложно; мы стараемся облегчить задачу сделать все правильно .
Trio был создан с нуля, чтобы использовать преимущества новейших функций Python, и черпает вдохновение из многих источников, в частности из Curio Дэйва Бизли. В результате конструкция радикально проще, чем у старых конкурентов, таких как asyncio и Twisted, но столь же эффективна. Trio — это библиотека ввода-вывода Python, которую я всегда хотел; Я считаю, что это делает создание программ, ориентированных на ввод-вывод, более простым, менее подверженным ошибкам и просто более увлекательным. Возможно, вы найдете то же самое.
Этот проект молодой и все еще в некоторой степени экспериментальный: общий дизайн надежен, а существующие функции полностью протестированы и задокументированы, но вы можете столкнуться с недостающей функциональностью или неточностями. Мы настоятельно рекомендуем вам использовать его, но вам следует прочитать выпуск № 1 и подписаться на него, чтобы получить предупреждение и возможность оставить отзыв о любых изменениях, нарушающих совместимость.
Я хочу попробовать! Потрясающий! У нас есть удобное руководство, с которого можно начать; никакой предварительный опыт работы с асинхронным кодированием не требуется.
Ух, я не хочу все это читать – покажите мне код! Если вы нетерпеливы, вот простой пример параллелизма: эхо-клиент и эхо-сервер.
Как Trio упрощает чтение и анализ программ по сравнению с конкурирующими подходами? Trio основано на новом образе мышления, который мы называем «структурированным параллелизмом». Лучшим теоретическим введением является статья «Заметки о структурированном параллелизме, или: Оператор Go считается вредным». Или посмотрите этот доклад на PyCon 2018, чтобы увидеть демонстрацию реализации алгоритма «Счастливые глазные яблоки» в старой библиотеке по сравнению с Trio.
Круто, но будет ли это работать в моей системе? Вероятно! Если у вас есть какой-либо Python 3.9 или более поздней версии (CPython или поддерживаемые в настоящее время версии PyPy3 подходят) и вы используете Linux, macOS, Windows или FreeBSD, Trio будет работать. Другие среды тоже могут работать, но мы тестируем именно их. И все наши зависимости — это чистый Python, за исключением CFFI для Windows, для которого доступны колеса, поэтому установка должна быть простой (компилятор C не требуется).
Я попробовал, но это не работает. Жаль это слышать! Вы можете попробовать обратиться за помощью в наш чат или на форум, сообщить об ошибке или задать вопрос на StackOverflow, и мы сделаем все возможное, чтобы вам помочь.
Трио потрясающее, и я хочу помочь сделать его еще лучше! Ты лучший! Предстоит проделать массу работы — восполнить недостающую функциональность, создать экосистему библиотек, использующих Trio, провести тестирование удобства использования (например, попробовать научить себя или друга использовать Trio и составить список всех сообщений об ошибках, на которые вы нажали, и поместить их туда). вы запутались?), улучшение документации... ознакомьтесь с нашим руководством для участников!
У меня нет каких-либо непосредственных планов по ее использованию, но мне нравится интересоваться проектированием библиотеки ввода-вывода! Это немного странно? Но давайте будем честными, вы отлично впишетесь здесь. У нас есть целый подфорум для обсуждения структурированного параллелизма (приветствуются разработчики других систем!). Или ознакомьтесь с нашим обсуждением выбора дизайна, списком для чтения и проблемами, отмеченными тегами «обсуждение дизайна».
Я хочу быть уверен, что юристы моей компании не рассердятся на меня! Не беспокойтесь, Trio имеет разрешительную лицензию MIT или Apache 2 по вашему выбору. Подробности см. в разделе ЛИЦЕНЗИЯ.
Участникам предлагается следовать нашему кодексу поведения во всех областях проекта.