Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Verständnis der Asynchronen Programmierung | Asynchronous Programming
Python Fortgeschrittene Konzepte

Verständnis der Asynchronen Programmierung

Swipe um das Menü anzuzeigen

Asynchronous programming ist eine Methode, Programme so zu schreiben, dass sie scheinbar mehrere Aufgaben gleichzeitig ausführen können, ohne darauf zu warten, dass jede Aufgabe abgeschlossen ist, bevor die nächste gestartet wird. Dies ist besonders nützlich für Aufgaben, die viel Zeit mit Warten verbringen, wie das Lesen von Dateien, das Senden von Netzwerk-Anfragen oder die Interaktion mit Datenbanken. Anstatt das Programm zu blockieren, während auf eine Aufgabe gewartet wird, ermöglicht asynchrones Programmieren, dass Ihr Code andere Aufgaben weiter ausführt.

Im Zentrum des asynchronen Programmiermodells von Python steht die Ereignisschleife (event loop). Die Ereignisschleife ist dafür verantwortlich, Aufgaben zu verwalten und zu planen, die bereit zur Ausführung sind. Sie behält alle Aufgaben im Blick, prüft, welche auf etwas warten (wie Eingaben oder einen Timer), und führt diejenigen aus, die bereit sind. Dadurch kann Ihr Programm bei mehreren Aufgaben Fortschritte machen, ohne dass mehrere Threads oder Prozesse benötigt werden.

Ein zentrales Element des asynchronen Programmierens in Python ist die Coroutine. Coroutinen sind spezielle Funktionen, die mit async def definiert werden. Sie können ihre Ausführung an bestimmten Stellen mit dem Schlüsselwort await pausieren, was der Ereignisschleife signalisiert, während des Wartens andere Aufgaben auszuführen. Wenn die erwartete Operation abgeschlossen ist, setzt die Ereignisschleife die Coroutine genau dort fort, wo sie unterbrochen wurde.

Durch die Verwendung der Ereignisschleife und von Coroutinen können Sie Code schreiben, der effizient und reaktionsschnell ist, insbesondere für I/O-lastige Programme. Dieser Ansatz unterscheidet sich von traditionellem Threading oder Multiprocessing, da er den Overhead für die Erstellung mehrerer Threads oder Prozesse vermeidet und stattdessen auf die Ereignisschleife setzt, um zu steuern, wann jede Aufgabe ausgeführt wird.

import asyncio

async def greet_after_delay():
    print("Hello...")
    await asyncio.sleep(2)  # Pause here, let event loop run other tasks
    print("...world!")

# To actually run the coroutine, you need to use the event loop:
asyncio.run(greet_after_delay())

Ausgabe:

Hello...
...world!
question mark

Welche der folgenden Aussagen beschreibt die Rolle der Ereignisschleife im asynchronen Programmieren mit Python am besten?

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 1

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Abschnitt 4. Kapitel 1
some-alt