formations/python-perfs/README.md

1.9 KiB
Raw Permalink Blame History

Python Performances

Les slides : https://mdk.fr/python-perfs

Description

Destinée aux développeurs Python aguerris, cette formation approche les différents moyens daméliorer les performances dun programme écrit en Python.

Les objectifs

  • Savoir mesurer les performances dun 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 dun algorithme (modèle du tas de sable abélien).
  • Étude de la complexité, du temps dexécution, et des goûlots détranglements des implémentations.
  • Implémenter des optimisations ciblées par les mesures précédentes.
  • Tentative dutiliser des structures de données spécialisées.
  • Tentatives dutiliser différents compilateurs (JIT et Ahead of Time) et interpréteurs.