Что такое корутина? Чем Task отличается от корутины?

В контексте асинхронного программирования в Python:

Короткий ответ

Что ответить на собеседовании

В контексте асинхронного программирования в Python:

Подробный разбор

Ответ с пояснениями

В контексте асинхронного программирования в Python:

  • Корутинa — это функция, которая может приостанавливать своё выполнение и отдавать управление обратно циклу событий, позволяя другим задачам выполняться параллельно. Она определяется с помощью async def и внутри может использовать await для ожидания результата других асинхронных операций.
  • Задача (Task) — это объект, который оборачивает корутину и планирует её выполнение в цикле событий. Задачи позволяют запускать корутины в фоне и управлять их жизненным циклом (например, отменять или ждать завершения).

Пример:

import asyncio

async def coro():
    await asyncio.sleep(1)
    return 'result'

async def main():
    task = asyncio.create_task(coro())  # создаём задачу из корутины
    print('Задача запущена')
    result = await task  # ждём завершения задачи
    print(f'Результат: {result}')

asyncio.run(main())

Таким образом, корутина — это сама асинхронная функция, а задача — это объект, который управляет её выполнением в цикле событий.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее