Ответ
Корутина (coroutine) в Python — это специальная функция, выполнение которой можно приостановить и возобновить. Она является основой для асинхронного программирования с использованием asyncio
.
Основные характеристики:
- Объявление: Создается с помощью ключевых слов
async def
. - Приостановка: Использует
await
для приостановки своего выполнения и передачи управления обратно в цикл событий (event loop), пока ожидается результат другой корутины (например,asyncio.sleep()
или сетевой запрос). - Возвращаемый объект: При вызове
async def
функция не выполняется немедленно, а возвращает объект корутины, который необходимо запланировать для выполнения в event loop.
Как это работает:
Когда корутина встречает await
, она говорит циклу событий: "Я жду завершения этой операции, а пока можешь запустить другую задачу". Это позволяет эффективно использовать время ожидания I/O операций, не блокируя весь поток.
Пример:
import asyncio
async def say_hello():
print("Начало... ")
# 1. Приостанавливаем say_hello и передаем управление event loop
# на 1 секунду. В это время могут выполняться другие задачи.
await asyncio.sleep(1)
# 2. Event loop возобновляет выполнение say_hello с этого места.
print("...конец!")
# Создаем объект корутины
coro = say_hello()
# Запускаем корутину в цикле событий asyncio
asyncio.run(coro)