Что выведет код Senior asyncio обновлено

Когда стартует задача из create_task

Вопрос

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

import asyncio

async def child():
    print('child')

async def main():
    t = asyncio.create_task(child())
    print('after create')
    await asyncio.sleep(0)
    print('after sleep')
    await t

asyncio.run(main())

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

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

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

Коротко

Код выведет: after create, child, after sleep. createtask только планирует задачу.

Что выведет

after create
child
after sleep

Разбор

create_task только планирует задачу. Текущая корутина продолжает выполняться до первого await, на котором уступает управление. sleep(0) отдаёт управление циклу, и тот выполняет child. Затем main продолжается.

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

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