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())
Таким образом, корутина — это сама асинхронная функция, а задача — это объект, который управляет её выполнением в цикле событий.