2023-06-15 12:33:21 +00:00
|
|
|
|
# Python Performances
|
|
|
|
|
|
2023-06-15 12:42:33 +00:00
|
|
|
|
Les slides : https://mdk.fr/python-perfs
|
|
|
|
|
|
2023-06-15 12:33:21 +00:00
|
|
|
|
## Description
|
|
|
|
|
|
|
|
|
|
Destinée aux développeurs Python aguerris, cette formation approche
|
|
|
|
|
les différents moyens d’améliorer les performances d’un programme
|
|
|
|
|
écrit en Python.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Les objectifs
|
|
|
|
|
|
|
|
|
|
- Savoir mesurer les performances d’un programme et identifier les goulots d’étranglement.
|
|
|
|
|
- Prendre conscience des impacts des différentes structures de données, de leur complexité algorithmique.
|
|
|
|
|
- Découvrir les différents "JIT" (*Just-In-Time* compilation) de l’écosystème Python.
|
|
|
|
|
- Découvrir la variété des interpréteurs Python et leurs caractéristiques.
|
|
|
|
|
- Entrelacer du code natif et du Python.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Pré-requis
|
|
|
|
|
|
|
|
|
|
- Excellente connaissance du langage, du niveau de la formation « Python avancé ».
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Programme
|
|
|
|
|
|
|
|
|
|
Bien choisir sa structure de donnée :
|
|
|
|
|
|
|
|
|
|
- comparaison asymptotique,
|
|
|
|
|
- comprendre les implémentations `O(1)`.
|
|
|
|
|
|
|
|
|
|
Les outils de mesure :
|
|
|
|
|
|
|
|
|
|
- Les outils extérieurs à Python (`time`, `hyperfine`, …).
|
|
|
|
|
- Configurer sa machine pour avoir des mesures reproductibles.
|
|
|
|
|
- Les outils de la bibliothèque standard (`cProfile`, `pstats`, `timeit`).
|
|
|
|
|
- Les outils tiers (`pyperf`, `snakeviz`, `Scalene`, `vprof`, …).
|
|
|
|
|
|
|
|
|
|
Les JIT, compilateurs, et interpréteurs tiers :
|
|
|
|
|
|
|
|
|
|
- PyPy, numba, cython, pythran, nuitka, mypyc, pyston, …
|
|
|
|
|
|
|
|
|
|
Utiliser du code natif pour optimiser ponctuellement :
|
|
|
|
|
|
|
|
|
|
- Interfacer du C ou du C++ avec Python en utilisant cython.
|
|
|
|
|
- Rédiger un module Python en C.
|