1.9 KiB
1.9 KiB
Python Performances
Les slides : https://mdk.fr/python-perfs
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 compilateurs (Just-In-Time et Ahead-Of-Time) 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
, …).
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.
Mise en pratique
- Rédaction naïve d’un algorithme (modèle du tas de sable abélien).
- Étude de la complexité, du temps d’exécution, et des goûlots d’étranglements des implémentations.
- Implémenter des optimisations ciblées par les mesures précédentes.
- Tentative d’utiliser des structures de données spécialisées.
- Tentatives d’utiliser différents compilateurs (JIT et Ahead of Time) et interpréteurs.