CodeGym/Kurse/Python SELF DE/Asynchrone Iteratoren und Generatoren

Asynchrone Iteratoren und Generatoren

Verfügbar

10.1 AsyncIterator

Asynchrone Iteratoren (AsyncIterator) ermöglichen die Arbeit mit Datenfolgen, die Elemente asynchron erzeugen. Sie werden in asynchronen Funktionen und Koroutinen zur Iteration über Daten verwendet, die mit Verzögerung eintreffen können, z. B. aus Netzwerkanfragen, asynchronen Ein-/Ausgabeoperationen oder anderen asynchronen Quellen.

Asynchroner Iterator

Ein asynchroner Iterator muss zwei Methoden implementieren:

Methode __aiter__():

Diese Methode sollte den asynchronen Iterator selbst zurückgeben. Sie ähnelt der Methode __iter__() für synchrone Iteratoren.

Methode __anext__():

Diese Methode sollte den nächsten Wert asynchron zurückgeben oder die Ausnahme StopAsyncIteration auslösen, wenn keine Elemente mehr vorhanden sind. Sie ähnelt der Methode __next__() für synchrone Iteratoren.

Beispiel:

import asyncio

class AsyncIterator:
    def __init__(self, start, end):
        self.current = start
        self.end = end

    def __aiter__(self):
        return self

    async def __anext__(self)(self):
        if self.current >= self.end:
            raise StopAsyncIteration

        await asyncio.sleep(1)  # Simulation einer asynchronen Verzögerung
        self.current += 1
        return self.current

async def main():
    async for number in AsyncIterator(1, 5):
        print(number)

asyncio.run(main())

Asynchrone Iteratoren ermöglichen die Verarbeitung von Daten, sobald sie eintreffen, ohne die Ausführung anderer Aufgaben zu blockieren. Das ist besonders nützlich für die Arbeit mit Netzwerkanfragen und anderen asynchronen Operationen.

Der Einsatz asynchroner Iteratoren ermöglicht es, einen besser lesbaren und wartbaren Code zur Verarbeitung von Datenfolgen asynchron zu schreiben.

10.2 AsyncGenerator

Asynchrone Generatoren ermöglichen das asynchrone Erzeugen von Werten, indem Schlüsselwörter wie async und await verwendet werden. Sie funktionieren ähnlich wie normale Generatoren, können aber die Ausführung zur Durchführung asynchroner Operationen unterbrechen.

Erstellung eines asynchronen Generators

Ein asynchroner Generator wird mit async def und yield definiert. Asynchrone Generatoren können await innerhalb ihrer Funktion verwenden, um asynchrone Operationen durchzuführen.

Beispiel:

async def async_generator():
    for i in range(3):
        await asyncio.sleep(1)  # Asynchrone Verzögerung
        yield i  # Wert erzeugen

Verwendung eines asynchronen Generators

Asynchrone Generatoren werden innerhalb asynchroner Funktionen mit dem async for-Operator verwendet.

import asyncio

async def main():
    async for value in async_generator():
        print(value)

asyncio.run(main())

Asynchrone Generatoren verbessern die Lesbarkeit und Wartbarkeit des Codes, indem sie eine einfache Syntaxkonstruktion async for für die Arbeit mit asynchronen Sequenzen verwenden.

2
Aufgabe
Python SELF DE,  Level 26Lektion 3
Gesperrt
Asynchroner Iterator
Asynchroner Iterator
2
Aufgabe
Python SELF DE,  Level 26Lektion 3
Gesperrt
Asynchroner Generator
Asynchroner Generator
Kommentare
  • Beliebt
  • Neu
  • Alt
Du musst angemeldet sein, um einen Kommentar schreiben zu können
Auf dieser Seite gibt es noch keine Kommentare