Генераторы предназначены для создания последовательностей значений с ленивыми вычислениями, что делает их идеальными для итерации с эффективным использованием памяти. Корутины предназначены для управления конкурентностью, особенно для асинхронных операций ввода-вывода.
yieldФункция-генератор использует yield для паузы выполнения и возврата значения вызывающему коду, возобновляя работу с того же места при следующей итерации.
def count_up(n):
for i in range(n):
yield i # produces values one at a time
next()awaitКорутина определяется с помощью async def и использует await для паузы выполнения до завершения асинхронной операции, освобождая event loop для запуска других задач.
async def fetch_data():
result = await some_io_operation() # suspends without blocking
return result
asyncio)| Генераторы | Корутины | |
|---|---|---|
| Ключевое слово | yield | async def + await |
| Роль | Производство данных | Управление конкурентностью |
| Управление | Вызывающий код (next()) | Event loop |
yieldawaitГенераторы используют yield для паузы выполнения и возврата значений, которые вытягиваются вызывающим кодом, а корутины используют await для паузы выполнения до завершения асинхронной операции без блокировки event loop.
Новый — ещё не проверен сообществом
Вы