Встречается на 2% собеседований по Python

В чем разница между task и корутиной

Корутина (coroutine) — это специальная функция, которую можно приостанавливать и возобновлять. Она определяется с помощью async def и может содержать await. Корутина не выполняется сама по себе, пока её явно не запустят.

Task — это обёртка вокруг корутины, которая планирует её выполнение в event loop. Когда создаётся Task, корутина автоматически добавляется в цикл событий и начинает выполняться конкурентно с другими задачами.

Пример:

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

Ключевые отличия:

  1. Корутина — это функция, Task — запущенная корутина.
  2. Task управляется event loop, корутина требует явного вызова await или создания Task.
  3. Можно создать множество Task из одной корутины.

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы