Sobes.tech
Назад к вопросам
Middle
5

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()) ```

Компании, где спрашивали
СБЕРСБЕР

Ответ от нейросети

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, что и отражается в порядке вывода.