Что выведет код Middle asyncio спрашивают часто обновлено

Порядок выполнения задач asyncio

Вопрос

Что выведет код? По строке на каждый print.

import asyncio

async def worker(name, delay):
    print('start', name)
    await asyncio.sleep(delay)
    print('end', name)
    return name

async def main():
    res = await asyncio.gather(worker('a', 0.2), worker('b', 0.1))
    print(res)

asyncio.run(main())

Попробуйте сами

Напишите, что выведет код: каждый вывод с новой строки.

Показать ответ и разбор

Коротко

Код выведет: start a, start b, end b, end a, ['a', 'b']. Обе задачи стартуют и печатают start, дойдя до sleep. b спит меньше и заканчивается первой. gather возвращает результаты в порядке аргументов, а не завершения: ['a', 'b'].

Что выведет

start a
start b
end b
end a
['a', 'b']

Разбор

Обе задачи стартуют и печатают start, дойдя до sleep. b спит меньше и заканчивается первой. gather возвращает результаты в порядке аргументов, а не завершения: ['a', 'b'].

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.