Middle+
Was ist die Funktion gather()?
sobes.tech KI
Antwort von AI
asyncio.gather() — ist eine Funktion des Moduls asyncio, die es ermöglicht, mehrere awaitable-Objekte (z. B. Koroutinen) parallel auszuführen und ihre Ergebnisse zu sammeln.
Hauptmerkmale:
- Parallele Ausführung: Die angegebenen Koroutinen werden gleichzeitig gestartet.
- Warten auf Abschluss:
gather()wartet, bis alle übergebenen Koroutinen beendet sind. - Ergebniszusammenstellung: Die Ergebnisse der Koroutinen werden in einer Liste zurückgegeben, in der Reihenfolge, in der sie an
gather()übergeben wurden. - Fehlerbehandlung: Standardmäßig, wenn eine Koroutine eine Ausnahme auslöst, storniert
gather()die anderen noch laufenden Koroutinen und wirft die Ausnahme erneut. Dieses Verhalten kann mit dem Parameterreturn_exceptions=Truegeändert werden.
Beispiel:
import asyncio
async def task_sleep(name, delay):
# Koroutine, die Arbeit simuliert
print(f"Aufgabe {name}: Start...")
await asyncio.sleep(delay)
print(f"Aufgabe {name}: Fertig")
return f"Ergebnis von {name}"
async def main():
# Zwei Koroutinen parallel starten
ergebnisse = await asyncio.gather(
task_sleep("A", 2),
task_sleep("B", 1)
)
# Ergebnisse ausgeben
print(f"Gather-Ergebnisse: {ergebnisse}")
# Hauptkoroutine starten
if __name__ == "__main__":
asyncio.run(main())
In diesem Beispiel werden task_sleep("A", 2) und task_sleep("B", 1) nahezu gleichzeitig gestartet. gather() wartet auf deren Abschluss und sammelt die Rückgabewerte ("Ergebnis von A", "Ergebnis von B") in einer Liste.