async/await = deine Multi-Crew-Strategie! 🎯# SYNCHRON (blockierend):
import time
def hol_daten():
time.sleep(3) # Simuliert API-Call
return "Daten"
def verarbeite():
print("Start")
daten = hol_daten() # Blockiert 3 Sek! ❌
print(daten)
print("Ende")
# Output: Start (3 Sek Pause) Daten Ende
# ASYNCHRON (non-blocking):
import asyncio
async def hol_daten():
await asyncio.sleep(3) # Pausiert, gibt Control ab!
return "Daten"
async def verarbeite():
print("Start")
task = asyncio.create_task(hol_daten()) # Startet async!
print("Mach was anderes...") # Läuft SOFORT! ✅
daten = await task # Warte jetzt auf Ergebnis
print(daten)
print("Ende")
asyncio.run(verarbeite())
# Output: Start / Mach was anderes... / (3 Sek) / Daten / Endeasync def = definiert asynchrone Funktion (Coroutine)await = "Warte auf dieses Ergebnis, gib Control inzwischen ab"asyncio.create_task() = starte Task parallel# Real-World: Fetch 5 APIs parallel
import aiohttp
import asyncio
async def fetch(url):
async with aiohttp.ClientSession() as session:
async with session.get(url) as response:
return await response.text()
async def fetch_all():
urls = ['api1.com', 'api2.com', 'api3.com', 'api4.com', 'api5.com']
tasks = [fetch(url) for url in urls]
results = await asyncio.gather(*tasks) # ALLE parallel! 🔥
return results
# 5 APIs in der Zeit von 1 API! 🎯SYNCHRON – Blockierendes Warten:
Task 1: [████████████████] 4 Sek
↓ WARTET ↓
Task 2: [████████████] 3 Sek
↓ WARTET ↓
Task 3: [████████] 2 Sek
Total: 4 + 3 + 2 = 9 Sekunden ❌
ASYNCHRON – Event Loop Orchestrierung:
┌──────────────────────────────────────┐
│ EVENT LOOP (Dirigent 🎼) │
└──────┬───────────┬──────────┬────────┘
│ │ │
Task 1: [██░░░░░░░░░░░░░░] 4 Sek
Task 2: [██░░░░░░░░░░] 3 Sek
Task 3: [██░░░░░░] 2 Sek
■ = Running □ = Waiting (non-blocking)
Zeit 0s: Task 1,2,3 starten parallel
Zeit 2s: Task 3 fertig!
Zeit 3s: Task 2 fertig!
Zeit 4s: Task 1 fertig!
Total: 4 Sekunden (längste Task) ✅
Speedup: 2.25x schneller! 🚀
Event Loop = Multitasking-Manager
await = "Pause mich, mach was anderes"asyncio.gather() – run multiple coroutines parallelasync with – async context managersasync for – iterate async generators💡 Tipp: Async/Await ermöglicht parallele Operationen - warte mit await auf Ergebnisse!
Unterstütze mein neues Projekt "Leyla's Code" mit einer Bitcoin-Spende!
💰
Bitcoin-Adresse:
Jede Spende hilft, Leyla's Code weiterzuentwickeln – danke, Captain! 🏴☠️
Willkommen zur Async-Archipel! In diesem Level lernst du die Grundlagen der asynchronen Programmierung – eine der wichtigsten Techniken in der modernen Softwareentwicklung. Async/Await ermöglicht es dir, mehrere Aufgaben parallel zu bearbeiten, ohne auf das Ende jeder einzelnen Operation warten zu müssen.
In der synchronen Programmierung wird jede Operation nacheinander ausgeführt – eine muss fertig sein, bevor die nächste beginnt. Bei der asynchronen Programmierung können mehrere Operationen gleichzeitig laufen. Das ist besonders nützlich für:
Python's asyncio Bibliothek basiert auf einer Event Loop – einem Scheduler, der asynchrone Operationen verwaltet. Mit async def definierst du asynchrone Funktionen, und mit await wartest du auf deren Ergebnisse, während andere Operationen weiterlaufen.
🎯 Real-World Applications: Async/Await ist essentiell für moderne Web-Apps, APIs, Microservices und Real-Time-Anwendungen. Frameworks wie FastAPI, Node.js und .NET Core nutzen async intensiv für maximale Performance!
Concurrency (Nebenläufigkeit): Mehrere Aufgaben werden verwaltet, aber nicht gleichzeitig ausgeführt (Task-Switching)
Parallelism (Parallelität): Mehrere Aufgaben laufen tatsächlich gleichzeitig auf verschiedenen CPU-Kernen
Async/Await ist primär für I/O-bound Operations (Netzwerk, Dateien) optimiert. Für CPU-bound Tasks sind Threads oder Multiprocessing besser geeignet.
Du beherrschst jetzt asynchrone Programmierung – ein Muss für moderne Entwickler! Weiter zum nächsten Level! 🏴☠️