Vous souhaitez discuter avec nous à propos de votre projet de formation ?
Vous voulez plus d'information sur une formation ou notre fonctionnement ?
Rappel Email
Nous pouvons organiser des sessions à d'autres dates ou dans d'autres villes (Bordeaux, Lille, Lyon, Marseille, Montpellier, Nantes, Nice, Paris, Strasbourg, Toulouse...)
Au-delà du confort qu’elle peut offrir, l’optimisation des performances d’un programme Python permet de réduire le matériel exécutant votre programme. Un programme optimisé est ainsi écologiquement plus vertueux : diminution de la consommation d'électricité et réduction du matériel utilisé.
Lors de cette formation pratique, vous acquerrez des compétences avancées pour améliorer les performances des programmes Python en choisissant les bonnes structures de données, en utilisant des outils de mesure appropriés, en explorant les JIT (compilateurs Just-In-Time) et en optimisant le code avec des modules en C.
Cet apprentissage s'adresse à tout·e·s développeur·euse·s aguerri·e·s au langage Python.
Grâce à la simulation d’un tas de sable, vous aurez l’opportunité de mettre directement en pratique les notions abordées.
Envie d’explorer l’écosystème Python ? Nos formations Python, Python avancé et Django sont faites pour vous.
Découvrez aussi nos formations spécifiques telles que Machine Learning avec Python ou encore Python scientifique.
Toutes nos formations étant limitées à 6 participant·e·s par session, vous aurez donc un contact privilégié avec votre formateur, Julien Palard, développeur passionné, très pédagogue et impatient de partager son expérience professionnelle lors des cours et durant les moments d’échanges informels de la formation.
Introduction aux performances Python et à l'importance des structures de données.
Comparaison asymptotique
- Comprendre la notations O()
.
- Analyser la complexité temporelle et spatiale des algorithmes courants.
Les implémentations O(1)
- Étude des structures de données avec des opérations en temps constant.
- Choix judicieux de la structure de données en fonction du contexte.
Les outils extérieurs à Python :
- Utilisation de time
et hyperfine
pour mesurer le temps d'exécution.
- Configuration de la machine pour des mesures reproductibles.
Les outils de la bibliothèque standard :
- Introduction à cProfile
, pstats
et timeit
.
- Analyse des performances et des statistiques obtenues.
Les outils tiers :
- Présentation des outils avancés tels que pyperf
, snakeviz
, scalene
, vprof
, etc.
- Utilisation de ces outils pour profiler et visualiser les performances des programmes.
Présentation des JIT (compilateurs Just-In-Time) :
- Principe de fonctionnement des JIT et leur impact sur les performances.
- Exploration des JIT populaires : PyPy
, numba
, cython
, pythran
, nuitka
, mypyc
, pyston
, etc.
Avantages et limitations de PyPy
.
Introduction à Numba
et Cython
pour la compilation JIT et l'optimisation du code.
Interfacer du C avec Python en utilisant Cython
:
- Introduction à Cython
et à l'écriture de modules Cython
.
- Création d'extensions Python en utilisant Cython
pour des performances accrues.
Rédiger un module Python en C :
- Utilisation de C-API de Python pour écrire un module en C.
- Compilation et intégration du module en C dans un programme Python.
Mises 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.
Julien Palard est un consultant expert Python passionné et pédagogue, investi dans de nombreux projets de logiciels libres (tels que sphinx-lint, pipe ou logtop).
En parallèle de ses activités professionnelles, Julien est également actif en tant que formateur et mentor, partageant généreusement ses connaissances et son expérience avec la communauté. Il cumule plus de 1350 heures de formation.
Passionné par la promotion du logiciel libre et de l'open source, Julien a :
* coordonné la traduction de Python en français,
* co-créé le projet d'enseignement libre et open-source hackinscience.org,
* été le mainteneur de plusieurs projets Python et C.
En dehors de son engagement professionnel et de ses projets open-source, Julien s'est également impliqué dans la communauté en tant que co-organisateur de la PyConFR depuis 2019 et en tant que membre du comité directeur de l'Association Francophone Python (AFPy) de 2020 à 2022.
Human Coders c'est un centre de formation pour développeurs avec :
Au-delà du confort qu’elle peut offrir, l’optimisation des performances d’un programme Python permet de réduire le matériel exécutant votre programme. Un programme optimisé est ainsi écologiquement plus vertueux : diminution de la consommation d'électricité et réduction du matériel utilisé.
Lors de cette formation pratique, vous acquerrez des compétences avancées pour améliorer les performances des programmes Python en choisissant les bonnes structures de données, en utilisant des outils de mesure appropriés, en explorant les JIT (compilateurs Just-In-Time) et en optimisant le code avec des modules en C.
Cet apprentissage s'adresse à tout·e·s développeur·euse·s aguerri·e·s au langage Python.
Grâce à la simulation d’un tas de sable, vous aurez l’opportunité de mettre directement en pratique les notions abordées.
Envie d’explorer l’écosystème Python ? Nos formations Python, Python avancé et Django sont faites pour vous.
Découvrez aussi nos formations spécifiques telles que Machine Learning avec Python ou encore Python scientifique.
Toutes nos formations étant limitées à 6 participant·e·s par session, vous aurez donc un contact privilégié avec votre formateur, Julien Palard, développeur passionné, très pédagogue et impatient de partager son expérience professionnelle lors des cours et durant les moments d’échanges informels de la formation.
Introduction aux performances Python et à l'importance des structures de données.
Comparaison asymptotique
- Comprendre la notations O()
.
- Analyser la complexité temporelle et spatiale des algorithmes courants.
Les implémentations O(1)
- Étude des structures de données avec des opérations en temps constant.
- Choix judicieux de la structure de données en fonction du contexte.
Les outils extérieurs à Python :
- Utilisation de time
et hyperfine
pour mesurer le temps d'exécution.
- Configuration de la machine pour des mesures reproductibles.
Les outils de la bibliothèque standard :
- Introduction à cProfile
, pstats
et timeit
.
- Analyse des performances et des statistiques obtenues.
Les outils tiers :
- Présentation des outils avancés tels que pyperf
, snakeviz
, scalene
, vprof
, etc.
- Utilisation de ces outils pour profiler et visualiser les performances des programmes.
Présentation des JIT (compilateurs Just-In-Time) :
- Principe de fonctionnement des JIT et leur impact sur les performances.
- Exploration des JIT populaires : PyPy
, numba
, cython
, pythran
, nuitka
, mypyc
, pyston
, etc.
Avantages et limitations de PyPy
.
Introduction à Numba
et Cython
pour la compilation JIT et l'optimisation du code.
Interfacer du C avec Python en utilisant Cython
:
- Introduction à Cython
et à l'écriture de modules Cython
.
- Création d'extensions Python en utilisant Cython
pour des performances accrues.
Rédiger un module Python en C :
- Utilisation de C-API de Python pour écrire un module en C.
- Compilation et intégration du module en C dans un programme Python.
Mises 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.
Julien Palard est un consultant expert Python passionné et pédagogue, investi dans de nombreux projets de logiciels libres (tels que sphinx-lint, pipe ou logtop).
En parallèle de ses activités professionnelles, Julien est également actif en tant que formateur et mentor, partageant généreusement ses connaissances et son expérience avec la communauté. Il cumule plus de 1350 heures de formation.
Passionné par la promotion du logiciel libre et de l'open source, Julien a :
* coordonné la traduction de Python en français,
* co-créé le projet d'enseignement libre et open-source hackinscience.org,
* été le mainteneur de plusieurs projets Python et C.
En dehors de son engagement professionnel et de ses projets open-source, Julien s'est également impliqué dans la communauté en tant que co-organisateur de la PyConFR depuis 2019 et en tant que membre du comité directeur de l'Association Francophone Python (AFPy) de 2020 à 2022.
Human Coders c'est un centre de formation pour développeurs avec :
* Nombre de personnes ayant répondu au questionnaire de satisfaction sur cette formation depuis 2012