Код: Выделить всё
async def
[img]https://i.sstatic.net /JpSbiRw2.png[/img]
Мы должны начать с одновременного запуска A и B, но мне было бы неоптимально использовать a, b = asyncio.gather(get_a(), get_b()), потому что C следует запускать сразу после завершения A, и не нужно ждать завершения B.
Аналогично мы могли бы запускать A и C последовательно, одновременно запуская B (как показано ниже), но в этом случае мы могли бы ждать запуска D дольше, чем необходимо, если A и B завершились, но C все еще работает:< /p>
Код: Выделить всё
async def group_1():
a = await get_a()
c = await get_c(a)
return c
c, b = asyncio.gather(
group_1(),
get_b(),
)
Я думаю, что при необходимости я мог бы использовать обратные вызовы, но я бы предпочел использовать более высокий уровень постройте уровень, если это возможно. Кроме того, в моем реальном варианте использования больше задач, чем этот, с более сложными цепочками зависимостей, и я думаю, что об обратных вызовах быстро станет трудно рассуждать.
Подробнее здесь: https://stackoverflow.com/questions/792 ... outines-as