Зачем нужны tasks в asyncio
Python
Middle
Без компании
Зачем нужны tasks в asyncio
Ответы
Tasks в asyncio позволяют конкурентно выполнять корутины, управляя их выполнением в цикле событий. Они оборачивают корутину и запускают её в фоне, не блокируя основной поток.
**Ключевые моменты:**
- Запускают корутины параллельно (не путать с параллелизмом потоков).
- Позволяют отслеживать состояние выполнения (pending, done, cancelled).
- Можно отменять через `task.cancel()`.
**Пример:**
```
import asyncio
async def foo():
print("Start foo")
await asyncio.sleep(1)
print("End foo")
async def main():
task = asyncio.create_task(foo()) # Создаём task
print("Task запущен")
await task # Ждём завершения
asyncio.run(main())
```
**Вывод:**
```
Task запущен
Start foo
End foo
```
Без `create_task` корутина `foo` выполнилась бы последовательно, а не конкурентно.