Maison  >  Article  >  développement back-end  >  Quels sont les cas d'utilisation et les avantages de l'exploitation de la syntaxe « rendement de » dans Python 3.3 ?

Quels sont les cas d'utilisation et les avantages de l'exploitation de la syntaxe « rendement de » dans Python 3.3 ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-24 03:44:02490parcourir

What are the Use Cases and Benefits of Leveraging

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 :

  • Ce cas d'utilisation imite la fonctionnalité d'une boucle for, mais avec la commodité supplémentaire de propager des exceptions. Par exemple :
<code class="python">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 :

  • Ce scénario implique la création d'une coroutine qui accepte les données qui lui sont envoyées et les écrit à un emplacement spécifié, comme un fichier ou un socket. Par exemple :
<code class="python">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</code>

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 reprise des coroutines, créant une alternative légère aux threads 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.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn