Performanten Python-Code schreiben- Profiling und Optimierung
Performanten Python-Code schreiben: Profiling und Optimierung
Ein praxisnaher Leitfaden zur Messung, Analyse und Beschleunigung von Python-Anwendungen
Inhaltsverzeichnis
Kapitel 1: Was bedeutet „performanter Code“ in Python?
- Laufzeit, Speicherverbrauch, CPU-Zeit
- Wann ist Optimierung notwendig – und wann nicht?
- Performance-Ziele definieren
- Überblick: Bottlenecks erkennen und gezielt verbessern
Kapitel 2: Zeitmessung und erste Analyse
- Schnelles Timing mit time und timeit
- Funktionsweise von timeit.repeat() und Timer()
- Mini-Projekt: Vergleich von zwei Sortierstrategien
Kapitel 3: Code-Profiling in der Praxis
- cProfile und profile verwenden
- Ergebnisse lesen: Funktionszeit, Aufrufanzahl
- pstats zur Auswertung
- Mini-Projekt: Engpass in einem Berechnungsmodul finden
Kapitel 4: Speicherprofiling und Lecksuche
- sys.getsizeof(), pympler, memory_profiler, tracemalloc
- Snapshots erstellen und vergleichen
- Mini-Projekt: Speicherfresser in Datenverarbeitung aufspüren
Kapitel 5: Datenstrukturen und Algorithmen bewusst wählen
- list, set, dict, tuple: Unterschiede in Performance
- Zeitkomplexität typischer Operationen
- Mini-Projekt: Optimierter Datenscan mit richtigen Strukturen
Kapitel 6: Schleifen, Comprehensions und Generatoren
- Schleifen effizient schreiben
- map(), filter() vs. List Comprehensions
- Speicher und Performance bei Generatoren
- Mini-Projekt: Textanalyse mit Generator-Pipeline
Kapitel 7: Funktionen und Modularisierung optimieren
- Redundanzen vermeiden
- Lokale vs. globale Variablen
- Funktionsaufrufkosten und Caching
- Mini-Projekt: Memoization für rechenintensive Aufgaben
Kapitel 8: Caching und Wiederverwendung
- functools.lru_cache für Funktions-Cache
- Ergebnisse speichern statt neu berechnen
- Strategien für ID- oder Objekt-Caching
- Mini-Projekt: Optimiertes API-Request-Modul mit Cache
Kapitel 9: Parallelisierung und Asynchronität
- IO-bound: asyncio, aiohttp
- CPU-bound: multiprocessing, ProcessPoolExecutor
- Aufgaben parallel und effizient ausführen
- Mini-Projekt: Bildersammlung parallel verarbeiten
Kapitel 10: Best Practices für nachhaltige Performance
- Testing und Benchmarking kombinieren
- Logging mit Zeit- und Speichernutzung
- Dokumentieren, messen, vergleichen
- Mini-Projekt: Analyse, Refactoring und Benchmark einer alten Codebasis
Anhang A: Übersicht nützlicher Performance-Tools
- timeit, cProfile, line_profiler, memory_profiler, tracemalloc, pympler, py-spy
Anhang B: Komplexitätstabelle häufig genutzter Python-Operationen
- Nachschlagewerk: Listen, Dictionaries, Mengen, Strings
Anhang C: Übungsaufgaben mit Lösungen
- Langsame Funktionen analysieren
- Datenstruktur verbessern
- Speicherprofil mit tracemalloc auswerten
- Lösungen mit Schritt-für-Schritt-Erklärung