Что делает asyncio.create_task()?Python

Программы на Python
Ответить
Anonymous
 Что делает asyncio.create_task()?

Сообщение Anonymous »

Что делает asyncio.create_task()? Меня смущает небольшой код:

Код: Выделить всё

import asyncio

async def counter_loop(x, n):
for i in range(1, n + 1):
print(f"Counter {x}: {i}")
await asyncio.sleep(0.5)
return f"Finished {x} in {n}"

async def main():
slow_task = asyncio.create_task(counter_loop("Slow", 4))
fast_coro = counter_loop("Fast", 2)

print("Awaiting Fast")
fast_val = await fast_coro
print("Finished Fast")

print("Awaiting Slow")
slow_val = await slow_task
print("Finished Slow")

print(f"{fast_val}, {slow_val}")

asyncio.run(main())
Это выходные данные:

Код: Выделить всё

001 | Awaiting Fast
002 | Counter Fast: 1
003 | Counter Slow: 1
004 | Counter Fast: 2
005 | Counter Slow: 2
006 | Finished Fast
007 | Awaiting Slow
008 | Counter Slow: 3
009 | Counter Slow: 4
010 | Finished Slow
011 | Finished Fast in 2, Finished Slow in 4
Я не совсем понимаю, как это работает.
  • Разве медленная_задача не должна запускаться до завершения
    fast_coro, потому что она никогда не использовалась в методе asyncio.gather()
    ?
  • Почему мы должны ждать Slow_task?
  • Почему после запуска сопрограммы выводится сообщение «Awaiting Slow»?
  • Что на самом деле представляет собой задача? Я знаю, что сбор занимается планированием
    задачи. А create_task якобы создает задачу.


Подробнее здесь: https://stackoverflow.com/questions/625 ... te-task-do
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»