Learn tips to help optimize your Python code. Discover how to pick the right data structures, use caching, integrate performance in your process, and more.
Overview
Syllabus
Introduction
- Welcome
- What you should know
- Use Codespaces with this course
- Always profile first
- General tips
- Measuring time
- CPU profiling
- line_profiler
- Tracing memory allocations
- memory_profiler
- Big-O notation
- bisect
- deque
- heapq
- Beyond the standard library
- Local caching of names
- Remove function calls
- Using __slots__
- Built-ins
- Allocate
- Overview
- Pre-calculating
- lru_cache
- Joblib
- When approximation is good enough
- Cheating example
- Amdahl's Law
- Threads
- Processes
- asyncio
- NumPy
- Numba
- Cython
- PyPy
- C extensions
- Why do we need a process?
- Design and code reviews
- Benchmarks
- Monitoring and alerting
- Next steps
Taught by
Miki Tebeka