TGViewer
Python: задачки и вопросы Python: задачки и вопросы @quiz_python · 6.93K subscribers
Post #4891 149
Python: задачки и вопросы
Развёрнутое пояснение:

1. asyncio.run запускает цикл событий и начинает выполнять main.

2. Первый вызов create_task планирует задачу db, но send ещё не начинает исполняться, поскольку main пока не передал управление циклу событий.

3. Второй вызов create_task аналогично планирует задачу log.

4. На await db функция main приостанавливается, и цикл событий запускает запланированные задачи в порядке их постановки.

5. Задача db печатает send db и приостанавливается на asyncio.sleep(0).

6. Затем задача log печатает send log и тоже приостанавливается.

7. После завершения db ожидание в main заканчивается, и main печатает saved. Поэтому строки выводятся в порядке send db, send log, saved.

Почему это важно: create_task запускает конкурентную задачу при ближайшей передаче управления циклу событий. Ожидание одной задачи не мешает другим уже запланированным задачам начать работу, что важно учитывать при отправке данных, обновлении метрик и обработке очередей.
  • ✍ 2
More from @quiz_python
  1. Sep 24, 2026Развёрнутое пояснение: 1. Для класса Client строится порядок разрешения методов: Client, A…
  2. Sep 24, 2026Post #4892
  3. Sep 24, 2026Post #4890
  4. Sep 23, 2026Развёрнутое пояснение: 1. При входе в блок with вызывается метод __enter__, который печата…
  5. Sep 23, 2026Post #4888
  6. Sep 23, 2026Развёрнутое пояснение: 1. В defaults создаётся словарь, где ключ retry ссылается на вложен…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →