Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
modul:m323:learningunits:lu03:callbacks [2024/09/11 09:10] – [Asynchron Programmieren in Python] kmaurizi | modul:m323:learningunits:lu03:callbacks [2024/09/11 09:27] (aktuell) – [Callbacks in der Asynchronen Programmierung] kmaurizi | ||
---|---|---|---|
Zeile 41: | Zeile 41: | ||
===== Callbacks in der Asynchronen Programmierung ===== | ===== Callbacks in der Asynchronen Programmierung ===== | ||
+ | |||
+ | <WRAP center round info 60%> | ||
+ | Wir werden das asynchrone Programmieren nicht vertiefen am BZZ. Dies dürfen Sie dann an der Fachhochschule 😉 | ||
+ | </ | ||
+ | |||
Asynchrone Programmierung ist ein Ansatz, bei dem Operationen ausgeführt werden können, ohne den Ablauf des gesamten Programms zu blockieren. Ein häufiges Szenario für asynchrone Aufrufe sind Netzwerkanfragen, | Asynchrone Programmierung ist ein Ansatz, bei dem Operationen ausgeführt werden können, ohne den Ablauf des gesamten Programms zu blockieren. Ein häufiges Szenario für asynchrone Aufrufe sind Netzwerkanfragen, | ||
Zeile 66: | Zeile 71: | ||
* **'' | * **'' | ||
- | === Beispiele === | ||
- | == Beispiel: Parallele Ausführung von Aufgaben == | + | === Beispiel: Parallele Ausführung von Aufgaben |
Eine der Hauptvorteile von asynchroner Programmierung ist die Fähigkeit, mehrere Aufgaben parallel auszuführen, | Eine der Hauptvorteile von asynchroner Programmierung ist die Fähigkeit, mehrere Aufgaben parallel auszuführen, | ||
Zeile 92: | Zeile 96: | ||
</ | </ | ||
- | == Beispiel: Asynchrone Dateioperation == | + | === Beispiel: Asynchrone Dateioperation |
In diesem Beispiel zeigen wir, wie Dateioperationen asynchron ablaufen können. Das Beispiel liest den Inhalt von zwei Dateien asynchron. | In diesem Beispiel zeigen wir, wie Dateioperationen asynchron ablaufen können. Das Beispiel liest den Inhalt von zwei Dateien asynchron. | ||
Zeile 115: | Zeile 119: | ||
</ | </ | ||
- | == Beispiel: API-Call mit Zeitüberschreitung == | + | === Beispiel: API-Call mit Zeitüberschreitung |
Ein häufiges Problem bei Netzwerkanfragen ist die Notwendigkeit, | Ein häufiges Problem bei Netzwerkanfragen ist die Notwendigkeit, | ||
Zeile 126: | Zeile 130: | ||
async with httpx.AsyncClient() as client: | async with httpx.AsyncClient() as client: | ||
try: | try: | ||
- | response = await client.get(' | + | response = await client.get(' |
print(response.text) | print(response.text) | ||
except httpx.RequestError as exc: | except httpx.RequestError as exc: | ||
Zeile 138: | Zeile 142: | ||
</ | </ | ||
- | == Beispiel: Daten von mehreren APIs gleichzeitig abrufen == | + | === Beispiel: Daten von mehreren APIs gleichzeitig abrufen |
Hier zeigen wir, wie mehrere API-Aufrufe parallel ablaufen können, um die Effizienz zu verbessern. | Hier zeigen wir, wie mehrere API-Aufrufe parallel ablaufen können, um die Effizienz zu verbessern. | ||
Zeile 145: | Zeile 149: | ||
import httpx | import httpx | ||
import asyncio | import asyncio | ||
+ | |||
async def fetch_data(url): | async def fetch_data(url): | ||
async with httpx.AsyncClient() as client: | async with httpx.AsyncClient() as client: | ||
response = await client.get(url) | response = await client.get(url) | ||
- | return response.json() | + | return response.text |
async def main(): | async def main(): | ||
urls = [ | urls = [ | ||
- | ' | + | ' |
- | ' | + | ' |
] | ] | ||
results = await asyncio.gather(*(fetch_data(url) for url in urls)) | results = await asyncio.gather(*(fetch_data(url) for url in urls)) | ||
for result in results: | for result in results: | ||
print(result) | print(result) | ||
+ | |||
if __name__ == ' | if __name__ == ' |