Выбор ответа Junior asyncio спрашивают часто обновлено
Последовательные await против gather
Вопрос
Каждый вызов fetch ждёт 1 секунду через asyncio.sleep(1). Сколько займёт код?
async def main():
a = await fetch(1)
b = await fetch(2)
c = await fetch(3)
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Около 3 секунд. Каждый await дожидается завершения корутины, прежде чем перейти к следующей строке, поэтому вызовы идут последовательно: 3 секунды.
Варианты ответа
- Около 1 секунды
- Около 0 секунд
- Около 1,5 секунды
- Около 3 секундправильный ответ
Разбор
Каждый await дожидается завершения корутины, прежде чем перейти к следующей строке, поэтому вызовы идут последовательно: 3 секунды. Чтобы ждать одновременно, нужно await asyncio.gather(fetch(1), fetch(2), fetch(3)) или TaskGroup, тогда будет около секунды.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.