Sobes.tech
Back to questions
Middle
4

Explain the output of the following Python asyncio code and why it behaves that way: ```python import asyncio async def say_hello(): print(1) await asyncio.sleep(1) print(2) async def main(): await say_hello() task = asyncio.create_task(say_hello()) print(3) await task asyncio.run(main()) ```

Companies where asked
СБЕРСБЕР

Answer from AI

sobes.tech AI

Вывод программы будет:

1
2
1
3
2

Объяснение:

  1. В main() сначала вызывается await say_hello(). Это запускает say_hello(), который печатает 1, затем делает await asyncio.sleep(1) — приостанавливает корутину на 1 секунду, позволяя другим задачам выполняться.
  2. После паузы say_hello() продолжает и печатает 2. Этот вызов полностью завершается.
  3. Затем создаётся задача task = asyncio.create_task(say_hello()), которая запускает say_hello() асинхронно, но не ждёт её завершения.
  4. Сразу после создания задачи печатается 3.
  5. Затем await task ожидает завершения задачи, которая сначала печатает 1, затем ждёт 1 секунду, и после этого печатает 2.

Таким образом, первый вызов say_hello() выполняется последовательно, а второй — запускается параллельно с выводом 3, что и отражается в порядке вывода.