En pratique, tirer parti de la syntaxe « rendement de » dans Python 3.3
La syntaxe « rendement de », introduite dans Python 3.3, offre une amélioration significative des capacités des générateurs et des coroutines. Il établit une connexion bidirectionnelle entre un appelant et un sous-générateur, permettant une communication transparente dans les deux sens.
Cas d'utilisation pour « rendement de »
Lecture Données des générateurs :
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
Envoi de données à des coroutines :
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
Comparaison avec les micro-threads
Le rendement de la syntaxe partage certaines similitudes avec les micro-threads dans le sens où il permet de suspendre et de reprendre les coroutines, créant ainsi une alternative légère aux fils traditionnels. Cependant, les coroutines sont plus légères et ont une surcharge de mémoire inférieure à celle des micro-threads. Ils s'exécutent également sur le même thread, évitant ainsi les problèmes associés au changement de contexte dans les environnements multithread.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3