C Extensions & FFI¶
Overview¶
C Extensions enable extreme performance:
- ctypes: Call C libraries from Python
- CFFI: C Foreign Function Interface
- Cython: Write C-like Python (compiles to C)
- PyPy C API: Integration with PyPy
- Implications for ML: NumPy, PyTorch, TensorFlow use C extensions
-
Key Topics¶
- ctypes - Call C/DLL functions directly
- CFFI - More Pythonic C interface
- Cython - Mixed Python/C for speed
- PyPy Extensions - Using C extensions with PyPy
- Performance Patterns - When to use extensions
When to Use C Extensions¶
| Scenario | Best Choice |
|---|---|
| Call existing C library | ctypes |
| Write new C code | Cython |
| Complex C interface | CFFI |
| NumPy-like operations | Cython |
| Maximum performance | Cython + pybind11 |
Performance Impact¶
Pure Python: 1x (baseline)
NumPy: 10-100x (C-optimized)
Numba JIT: 100-1000x
Cython: 10-100x
ctypes: Similar to Cython
CFFI: Similar to Cython
-
Related Topics¶
- [03 Jit Compilation & Optimization](/05-py3/09-bytecode-and-execution/(03-jit-compilation-optimization/) - JIT as alternative
- 00 Readme - Performance tuning
- 05 Custom Operators - Custom CUDA kernels