В первом примере с использованием asyncio пять асинхронных задач work() запускаются одновременно и выполняются параллельно, каждая с задержкой в 1 секунду. В итоге общий затраченный время будет примерно 1 секунда, так как все задачи спят одновременно.
1. Какой будет порядок вывода в консоль? Сколько примерно времени займёт выполнение всей программы?
В первом примере с использованием asyncio пять асинхронных задач work() запускаются одновременно и выполняются параллельно, каждая с задержкой в 1 секунду.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
1. Какой будет порядок вывода в консоль? Сколько примерно времени займёт выполнение всей программы?
2. Как изменить main(), чтобы func1() и func2() запускались асинхронно, и общее время выполнения сократилось до примерно 2 секунд?
Ответ
В первом примере с использованием asyncio пять асинхронных задач work() запускаются одновременно и выполняются параллельно, каждая с задержкой в 1 секунду. В итоге общий затраченный время будет примерно 1 секунда, так как все задачи спят одновременно.
Во втором примере функции work() вызываются последовательно, каждая вызывает time.sleep(1), блокируя поток на 1 секунду. Таким образом, общее время будет около 5 секунд.
Это демонстрирует преимущество асинхронного программирования для задач, которые могут выполняться параллельно без блокировки, например, ожидание ввода-вывода.
Пример вывода первого кода:
Total time: 1.01
Пример вывода второго кода:
Total time: 5.01