Sobes.tech
Middle
29

Regarde le code avec asyncio. Combien de temps la fonction main va-t-elle s'exécuter ? Comment faire pour que les coroutines s'exécutent en parallèle ?

Entreprises à qui on a demandé
СБЕРСБЕР

Réponse de l'IA

sobes.tech IA

Без конкретного кода сложно точно сказать, но обычно если корутины вызываются последовательно с помощью await, то общее время выполнения равно сумме времени всех корутин.

Чтобы запустить корутины параллельно, используют asyncio.gather или создают задачи через asyncio.create_task.

Пример:

import asyncio

async def task(id, delay):
    await asyncio.sleep(delay)
    print(f"Task {id} done")

async def main():
    # Последовательное выполнение
    await task(1, 2)
    await task(2, 2)

asyncio.run(main())

# Чтобы запустить параллельно:
async def main_parallel():
    await asyncio.gather(
        task(1, 2),
        task(2, 2)
    )

asyncio.run(main_parallel())

В первом случае общее время ~4 секунды, во втором — ~2 секунды, так как задачи выполняются одновременно.