Как стать автором
Обновить

Комментарии 4

Конечно, можно использовать await asyncio.wait(tasks, return_when=FIRST_EXCEPTION), но надо не забывать корректно завершать открытые задачи.

Поэтому нужно просто один раз разработать одну обёртку-«детскую», в основе которой будет asyncio.wait, и использовать её везде где требуется. Более того, подобные обёртки уже делали до нас. Зачем для этого городить аж целый Trio — непонятно.


В общем, прочитав пост, я не понял, какой мне будет профит от Trio.

На мой взгляд, вот прямо сейчас «космического» профита нет, но некоторые идеи интересны и стоит понаблюдать за развитием библиотеки. Пусть она сама по себе не лучше других, но ее идеи где-то найдут отражение. Ну и, конечно, нужно больше инструментов. Хороших. Это развитие индустрии.

Иронично то, что автор, реализуя в библиотеке "новый и прорывной подход параллельных вычислений, качественно превосходящий реализацию, например, в Go", реализует в Python аналоги каналов и context.Context из Go.


Видимый плюс библиотеки — трейсбэки. Которые режутся стандартной библиотекой не без причины. Для получения трейсбека нужно держать в памяти стек, который корутиной (да больше никем) использоваться не будет.


Код из статьи, использующий стандартный asyncio, мне кажется понятнее и очевиднее кода, написанного с использованием Trio. Использование with вместо asyncio.wait совсем не понравилось. Но здесь дело вкуса.


Для завершения корутины библиотека может выбросить исключение внутри third-party library. Это совсем нехорошо.


В общем не совсем понятно зачем. Наверное, содержит электролиты.

Согласен. Спасибо за комментарий)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий