Запустите оба ожидания конкурентно, например через asyncio.gather(). Два последовательных await asyncio.sleep(5) дают около 10 секунд, а конкурентный запуск — около 5 секунд плюс накладные расходы.
Как сделать, чтобы два asyncio.sleep(5) отработали за 5 секунд, а не за 10?
Запустите оба ожидания конкурентно, например через 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 или планирования недостаточно.