В чем разница между task и корутиной
Python
Middle
Без компании
В чем разница между task и корутиной
Ответы
Корутина (coroutine) — это специальная функция, которую можно приостанавливать и возобновлять. Она определяется с помощью `async def` и может содержать `await`. Корутина не выполняется сама по себе, пока её явно не запустят.
Task — это обёртка вокруг корутины, которая планирует её выполнение в event loop. Когда создаётся Task, корутина автоматически добавляется в цикл событий и начинает выполняться конкурентно с другими задачами.
Пример:
```
import asyncio
async def my_coroutine():
print("Hello")
await asyncio.sleep(1)
print("World")
# Просто корутина (не выполняется)
coro = my_coroutine()
# Task — запускает корутину в event loop
task = asyncio.create_task(my_coroutine())
```
Ключевые отличия:
- Корутина — это функция, Task — запущенная корутина.
- Task управляется event loop, корутина требует явного вызова `await` или создания Task.
- Можно создать множество Task из одной корутины.