«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Каковы варианты использования и преимущества использования синтаксиса «yield from» в Python 3.3?

Каковы варианты использования и преимущества использования синтаксиса «yield from» в Python 3.3?

Опубликовано 6 ноября 2024 г.
Просматривать:329

What are the Use Cases and Benefits of Leveraging \

На практике использование синтаксиса "yield from" в Python 3.3

Синтаксис "yield from", представленный в Python 3.3, предлагает значительное расширение возможностей генераторов и сопрограмм. Он устанавливает двустороннее соединение между вызывающим абонентом и субгенератором, обеспечивая бесперебойную связь в обоих направлениях.

Случаи использования для «выхода из»

Чтение Данные от генераторов:

  • Этот вариант использования имитирует функциональность цикла for, но с дополнительным удобством распространения исключений. Например:
def reader():
    for i in range(4):
        yield '<< %s' % i

def reader_wrapper(g):
    yield from g

wrap = reader_wrapper(reader())
for i in wrap:
    print(i)

# Result:
# << 0
# << 1
# << 2
# << 3

Отправка данных в сопрограммы:

  • Этот сценарий предполагает создание сопрограммы, которая принимает отправленные в нее данные и записывает их в указанное место, например в файл. или розетка. Например:
def writer():
    while True:
        w = (yield)
        print('>> ', w)

def writer_wrapper(coro):
    yield from coro

w = writer()
wrap = writer_wrapper(w)
wrap.send(None)  # Prime the coroutine
for i in range(4):
    wrap.send(i)

# Expected result:
# >>  0
# >>  1
# >>  2
# >>  3

Сравнение с микропотоками

Синтаксис доходности имеет некоторое сходство с микропотоками в том, что он позволяет приостанавливать и возобновлять сопрограммы, создавая облегченную альтернативу традиционные нити. Однако сопрограммы более легкие и требуют меньше памяти по сравнению с микропотоками. Они также работают в одном потоке, что позволяет избежать проблем, связанных с переключением контекста в многопоточных средах.

Заявление о выпуске Эта статья перепечатана по адресу: 1729681907. Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить их.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3