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

Quels sont les divers cas d'utilisation de « rendement de » dans Python 3.3 et ses avantages ?

DDD
DDDoriginal
2024-10-23 22:46:29799parcourir

What are the Diverse Use Cases of

Comprendre les cas d'utilisation polyvalents du « rendement de » dans Python 3.3

Situations favorisant la syntaxe du « rendement de »

« rendement de » s'avère particulièrement utile dans les scénarios où :

  • Lecture des données des générateurs :

    <code class="python">def reader():
      for i in range(4):
          yield '< ' + str(i)
    
    for i in reader():
      print(i)  # Prints '< 0', '< 1', '< 2', '< 3'

    "rendement de" offre un moyen pratique de parcourir les données générées par un autre générateur.

  • Envoi de données aux coroutines :

    <code class="python">def writer():
      while True:
          w = (yield)
          print('> ', w)
    
    w = writer()
    for i in range(4):
      w.send(i)  # Prints '> 0', '> 1', '> 2', '> 3'</code>

    « rendement de » permet à la coroutine « écrivain » de recevoir des données de manière transparente envoyé depuis une source externe.

Pourquoi le « rendement de » est-il comparé aux micro-threads ?

« rendement de » reflète le comportement des micro-threads dans le sens que :

  • Connexion transparente :
    Il établit une connexion bidirectionnelle qui propage de manière transparente les données et les exceptions entre l'appelant et le sous-générateur.
  • Interaction bidirectionnelle :
    Les données peuvent être envoyées à la fois dans et hors du sous-générateur, permettant une communication flexible.

Exemple : combiner la lecture et l'écriture de données

Une application pratique du « rendement de » consiste à combiner la lecture et l'écriture de données en une seule fonction. Prenons l'exemple suivant :

<code class="python">def data_handler():
    for i in reader():
        yield from writer(i)

for i in data_handler():
    print(i)  # Prints the data written by 'writer'</code>

La fonction "data_handler" utilise "yield from" pour transmettre les données de manière séquentielle du générateur "lecteur" à la coroutine "écrivain", créant ainsi un pipeline de traitement de données rationalisé.

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