Asynchrones Verarbeiten in Python

Asynchrones Verarbeiten in Python

Dieser Artikel erklärt das asynchrone Verarbeiten in Python.

Sie können Codebeispiele für die grundlegende Verwendung von Pythons async/await und dem asyncio-Modul lernen.

YouTube Video

Asynchrones Verarbeiten in Python

Asynchrone Verarbeitung in Python ist ein Mechanismus, um zeitaufwändige I/O-Operationen wie das Lesen und Schreiben von Dateien oder die Netzwerkommunikation effizient zu behandeln. Bei der synchronen Verarbeitung wartet die nächste Operation, bis die aktuelle abgeschlossen ist. Mit asynchroner Verarbeitung kann man jedoch während der Wartezeit andere Aufgaben ausführen. In Python steht das Modul asyncio für die Durchführung von asynchronen Verarbeitungen zur Verfügung. Hier werden die grundlegenden Elemente erklärt und die Verwendung Schritt für Schritt vorgestellt.

Grundlegende Syntax

Im Zentrum der asynchronen Verarbeitung stehen Funktionen, die als Coroutinen bezeichnet werden. async-Funktionen definieren asynchrone Funktionen, und await wird verwendet, um innerhalb dieser Funktionen auf eine asynchrone Aufgabe zu warten.

 1import asyncio
 2
 3async def say_hello():
 4    print("Hello")
 5    await asyncio.sleep(1)
 6    print("World")
 7
 8if __name__ == "__main__":
 9    # Execute asynchronous task
10    asyncio.run(say_hello())
  • Im obigen Code wird die Funktion say_hello als eine asynchrone Aufgabe definiert. Während du mit sleep() eine Sekunde wartest, können andere asynchrone Aufgaben ausgeführt werden.

Ausführen mehrerer Aufgaben

Mit der gather-Funktion des asyncio-Moduls kannst du mehrere Aufgaben gleichzeitig ausführen.

 1import asyncio
 2
 3async def task1():
 4    print("Task 1 started")
 5    await asyncio.sleep(2)
 6    print("Task 1 completed")
 7
 8async def task2():
 9    print("Task 2 started")
10    await asyncio.sleep(1)
11    print("Task 2 completed")
12
13async def main():
14    await asyncio.gather(task1(), task2())
15
16if __name__ == "__main__":
17    asyncio.run(main())
  • In diesem Beispiel werden task1 und task2 gleichzeitig ausgeführt. Als Ergebnis wird task2 zuerst von den beiden Aufgaben abgeschlossen, aber die gesamte Ausführungszeit entspricht der längsten Aufgabenlaufzeit.

Fehlerbehandlung

Fehlerbehandlung ist auch beim asynchronen Verarbeiten wichtig. Sie können Fehler mit der standardmäßigen try-except-Syntax abfangen und behandeln.

 1import asyncio
 2
 3async def faulty_task():
 4    raise Exception("An error occurred")
 5
 6async def main():
 7    try:
 8        await faulty_task()
 9    except Exception as e:
10        print(f"Caught an error: {e}")
11
12if __name__ == "__main__":
13    asyncio.run(main())
  • Dieser Code zeigt, wie Ausnahmen, die in asynchronen Funktionen auftreten, mit try-except abgefangen und deren Fehlermeldungen sicher behandelt werden können. Die Ausnahme von faulty_task wird in main abgefangen und entsprechend ausgegeben.

Zusammenfassung

Die asynchrone Verarbeitung in Python nutzt async/await und asyncio, um während des Wartens auf I/O andere Aufgaben gleichzeitig auszuführen und so eine effiziente Verarbeitung zu ermöglichen. Durch die gleichzeitige Ausführung mehrerer Aufgaben und asynchrone I/O kann die Leistung erheblich gesteigert werden. Außerdem können Fehler wie bei regulärem try-except behandelt werden, wodurch asynchroner Code sicher ausgeführt werden kann.

Sie können den obigen Artikel mit Visual Studio Code auf unserem YouTube-Kanal verfolgen. Bitte schauen Sie sich auch den YouTube-Kanal an.

YouTube Video