Встречается на собеседованиях • сегодня

В чем разница между генератором и корутиной

Генератор и корутина в Python используют ключевое слово yield, но служат разным целям:

Генератор — это итератор, который генерирует значения на лету. Он однонаправленный: данные только выдаются наружу через yield. Пример:

python
def count_up_to(n):
    i = 1
    while i <= n:
        yield i
        i += 1

Корутина — это генератор, который может принимать данные через send() и обрабатывать их. Двунаправленный: данные можно и получать, и отправлять. Пример:

python
def coroutine():
    while True:
        x = yield
        print(f"Received: {x}")

c = coroutine()
next(c)  # инициализация
c.send(10)  # выведет "Received: 10"

Ключевые отличия:

  1. Генераторы производят данные, корутины их потребляют и обрабатывают
  2. Корутины поддерживают .send(), .throw(), .close()
  3. Корутины часто используются для кооперативной многозадачности
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы