Sobes.tech
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 Parameter return_exceptions=True geä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.