Na prática, aproveitando a sintaxe "yield from" no Python 3.3
A sintaxe "yield from", introduzida no Python 3.3, oferece um aprimoramento significativo nas capacidades de geradores e corrotinas. Ele estabelece uma conexão bidirecional entre um chamador e um subgerador, permitindo uma comunicação perfeita em ambas as direções.
Casos de uso para "rendimento de"
Leitura Dados de geradores:
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
Envio de dados para corrotinas:
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
Comparação com Micro-Threads
O rendimento da sintaxe compartilha algumas semelhanças com micro-threads, pois permite suspender e retomar corrotinas, criando uma alternativa leve para fios tradicionais. No entanto, as corrotinas são mais leves e têm menor sobrecarga de memória em comparação com microthreads. Eles também são executados no mesmo thread, evitando os problemas associados à troca de contexto em ambientes multithread.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3