Sobes.tech
Back to questions
Junior — Middle
49

Можете объяснить различия между задачей и корутиной в контексте асинхронного программирования?

Companies where asked
Notamedia

Answer from AI

sobes.tech AI

В контексте асинхронного программирования в 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())

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