Sobes.tech
Middle
36

Pozri si kód s asyncio. Ako dlho bude trvať vykonanie funkcie main? Ako zabezpečiť, aby sa korutiny spúšťali paralelne?

Spoločnosti boli požiadané
СБЕРСБЕР

Odpoveď od AI

sobes.tech AI

Без конкретного кода сложно точно сказать, но обычно если корутины вызываются последовательно с помощью 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 секунды, так как задачи выполняются одновременно.