Was sind die Anwendungsfälle und Vorteile der Nutzung der Syntax „yield from' in Python 3.3?

Mary-Kate Olsen
Freigeben: 2024-10-24 03:44:02
Original
406 Leute haben es durchsucht

What are the Use Cases and Benefits of Leveraging

In der Praxis die „Ausbeute aus“-Syntax in Python 3.3 nutzen

Die in Python 3.3 eingeführte „Ausbeute aus“-Syntax bietet Folgendes eine erhebliche Verbesserung der Fähigkeiten von Generatoren und Coroutinen. Es stellt eine bidirektionale Verbindung zwischen einem Anrufer und einem Subgenerator her und ermöglicht so eine nahtlose Kommunikation in beide Richtungen.

Anwendungsfälle für „Ertrag aus“

Lesen Daten von Generatoren:

  • Dieser Anwendungsfall ahmt die Funktionalität einer for-Schleife nach, bietet jedoch den zusätzlichen Komfort, Ausnahmen zu verbreiten. Zum Beispiel:
<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
Nach dem Login kopieren

Daten an Coroutinen senden:

  • In diesem Szenario wird eine Coroutine erstellt, die an sie gesendete Daten akzeptiert und schreibt an einen angegebenen Speicherort, z. B. eine Datei oder einen Socket. Zum Beispiel:
<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>
Nach dem Login kopieren

Vergleich mit Micro-Threads

Die Ausbeute aus der Syntax hat einige Ähnlichkeiten mit Micro-Threads, da sie das Anhalten und ermöglicht Wiederaufnahme von Coroutinen und Schaffung einer leichten Alternative zu herkömmlichen Threads. Allerdings sind Coroutinen im Vergleich zu Mikrothreads leichter und haben einen geringeren Speicheraufwand. Sie werden auch im selben Thread ausgeführt, wodurch die Probleme vermieden werden, die mit dem Kontextwechsel in Umgebungen mit mehreren Threads verbunden sind.

Das obige ist der detaillierte Inhalt vonWas sind die Anwendungsfälle und Vorteile der Nutzung der Syntax „yield from' in Python 3.3?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!