Sobes.tech
Middle
22

Посмотри на код с asyncio. Сколько по времени будет выполняться функция main? Как сделать, чтобы корутины запускались параллельно?

Сұралған компаниялар
СБЕРСБЕР

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