„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Was sind die Anwendungsfälle und Vorteile der Nutzung der Syntax „yield from“ in Python 3.3?

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

Veröffentlicht am 06.11.2024
Durchsuche:988

What are the Use Cases and Benefits of Leveraging \

In der Praxis: Nutzung der „yield from“-Syntax in Python 3.3

Die in Python 3.3 eingeführte „yield from“-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 weiterzugeben. Zum Beispiel:
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

Senden von Daten an Coroutinen:

  • In diesem Szenario wird eine Coroutine erstellt, die an sie gesendete Daten akzeptiert und sie an einen bestimmten Ort schreibt, beispielsweise in eine Datei oder eine Steckdose. Zum Beispiel:
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

Vergleich mit Micro-Threads

Die Syntaxausbeute weist einige Ähnlichkeiten mit Micro-Threads auf, da sie das Anhalten und Fortsetzen von Coroutinen ermöglicht und so eine leichte Alternative zu schafft traditionelle 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.

Freigabeerklärung Dieser Artikel wird unter folgender Adresse abgedruckt: 1729681907. Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3