Как сделать, чтобы два asyncio.sleep(5) отработали за 5 секунд, а не за 10?

Запустите оба ожидания конкурентно, например через asyncio.gather(). Два последовательных await asyncio.sleep(5) дают около 10 секунд, а конкурентный запуск — около 5 секунд плюс накладные расходы.

Короткий ответ

Что ответить на собеседовании

Запустите оба ожидания конкурентно, например через asyncio.gather(). Два последовательных await asyncio.sleep(5) дают около 10 секунд, а конкурентный запуск — около 5 секунд плюс накладные расходы.

Подробный разбор

Ответ с пояснениями

Запустите оба ожидания конкурентно, например через asyncio.gather(). Два последовательных await asyncio.sleep(5) дают около 10 секунд, а конкурентный запуск — около 5 секунд плюс накладные расходы.

Пример:

import asyncio

async def main():
    await asyncio.gather(
        asyncio.sleep(5),
        asyncio.sleep(5),
    )

asyncio.run(main())

sleep отдаёт управление loop, поэтому ожидания перекрываются. Это не ускоряет произвольную CPU-работу. В более сложном коде учитывают ошибки, отмену и жизненный цикл задач; просто создать coroutine без await или планирования недостаточно.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее