Nebenläufigkeit in Python- Threads, AsyncIO und Multiprocessing
Nebenläufigkeit in Python: Threads, AsyncIO und Multiprocessing
Ein praxisorientierter Leitfaden zur effizienten Ausführung mehrerer Aufgaben gleichzeitig – synchron, asynchron und parallel
Inhaltsverzeichnis
Kapitel 1: Einführung in Nebenläufigkeit und Parallelität
- Was ist Nebenläufigkeit? Was ist Parallelität?
- Unterschied: Threading, Multiprocessing, AsyncIO
- IO-bound vs. CPU-bound Aufgaben
- Wann lohnt sich welches Modell?
Kapitel 2: Nebenläufigkeit mit threading
- Das threading-Modul verstehen
- Threads erstellen und starten
- .join(), Lock, RLock, Semaphore
- Mini-Projekt: Gleichzeitiger Zugriff auf eine Ressource
Kapitel 3: Gefahren und Herausforderungen mit Threads
- Race Conditions und Deadlocks
- Der Global Interpreter Lock (GIL)
- Thread-sicherer Code mit Locks
- Mini-Projekt: Sicherer Thread-Zähler
Kapitel 4: Aufgaben parallelisieren mit multiprocessing
- Warum multiprocessing für CPU-intensive Aufgaben?
- Prozesse starten, Daten übergeben
- Queue, Pipe, Pool
- Mini-Projekt: Parallele Primzahlsuche
Kapitel 5: Prozesse koordinieren und synchronisieren
- Gemeinsame Ressourcen (Shared Memory)
- Unterschiede zu threading
- Fehlerbehandlung in Kindprozessen
- Mini-Projekt: Bildkonvertierung in mehreren Prozessen
Kapitel 6: Asynchrone Programmierung mit asyncio
- Coroutines mit async def und await
- Event Loop und Task Scheduling
- asyncio.sleep, gather, create_task
- Mini-Projekt: Mehrere Webanfragen gleichzeitig abarbeiten
Kapitel 7: Kombinieren von asyncio mit IO-bound Aufgaben
- Arbeiten mit aiohttp, aiomysql, aiosqlite
- Async-Datenbank- und Netzwerkzugriffe
- Mini-Projekt: Asynchroner Web-Scraper
Kapitel 8: Nebenläufigkeit strukturieren mit concurrent.futures
- ThreadPoolExecutor vs. ProcessPoolExecutor
- submit(), map(), as_completed()
- Mini-Projekt: Parallele Analyse von Textdateien
Kapitel 9: Best Practices für nebenläufige Python-Programme
- Lesbarkeit vs. Leistung
- Fehlerbehandlung, Timeout und Abbruchbedingungen
- Logging in Multi-Thread- und Multi-Process-Umgebungen
- Kombinierte Modelle in realen Projekten
Kapitel 10: Wann welches Modell?
- Entscheidungsbaum: threading vs. asyncio vs. multiprocessing
- Kriterien: Geschwindigkeit, Speicher, Einfachheit
- Empfehlungen für Web-Apps, Datenverarbeitung, Tools
- Mini-Projekt: Mixed-Model-Szenario (Web-Scraping + Analyse)
Anhang A: Übersicht wichtiger Methoden und Module
- threading, multiprocessing, asyncio, concurrent.futures
- Kurzreferenz der wichtigsten Funktionen
Anhang B: Typische Fehler und deren Vermeidung
- RuntimeError, CancelledError, BrokenPipeError, TimeoutError
- Schutz vor Nebenläufigkeitsfallen
Anhang C: Übungsaufgaben mit Lösungen
- Mehrere Aufgaben gleichzeitig starten
- Web-Anfragen und Dateioperationen kombinieren
- Fehlerbehandlung und Performance vergleichen
- Ausführliche Lösungen mit Kommentaren