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_helloals eine asynchrone Aufgabe definiert. Während du mitsleep()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
task1undtask2gleichzeitig ausgeführt. Als Ergebnis wirdtask2zuerst 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-exceptabgefangen und deren Fehlermeldungen sicher behandelt werden können. Die Ausnahme vonfaulty_taskwird inmainabgefangen 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.