Запускайте функции сопрограмм Python одновременно, но запускайте дополнительные сопрограммы, как только определенные сопPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Запускайте функции сопрограмм Python одновременно, но запускайте дополнительные сопрограммы, как только определенные соп

Сообщение Anonymous »

Всего у меня четыре сопрограммы (

Код: Выделить всё

async def
функции): A, B, C и D. C нельзя вызвать, пока я не узнаю результат A, а D нельзя вызвать, пока я не знаю результат A и B. См. прилагаемую схему. Я хочу запускать эти сопрограммы одновременно, чтобы свести к минимуму общее время, затрачиваемое на получение результатов от C и D.
[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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»