Développement logiciel
Python avancé : concurrence et performance
Pour les ingénieurs dont les services et pipelines Python atteignent leurs limites. La formation part de la mesure — cProfile, py-spy, tracemalloc — puis traite le GIL, les threads, les pools de processus et asyncio, avant d'aborder la vectorisation NumPy, la mise en cache et l'accélération native des chemins encore trop lents.
Aperçu
Un apprentissage pratique pour le transfert en situation de travail.
Le travail sur la performance échoue presque toujours de la même manière : une équipe réécrit la boucle qui semble lente, la met en production, et le point d'entrée expire toujours parce que le coût réel venait d'une sérialisation ou d'un pool de connexions limité à cinq. Cette formation impose la preuve avant l'action. Les participants profilent une charge réelle, la classent comme limitée par le CPU, les entrées-sorties ou la mémoire, et choisissent ensuite seulement entre threads, processus et asyncio. La correction en contexte concurrent reçoit un poids égal : compétition, interblocages, contre-pression et annulations.
Prérequis
Au moins deux ans de développement Python, incluant classes et générateurs, avec une expérience de Python en production ou en pipelines planifiés.
Objectifs
- Profiler CPU, mémoire et temps réel pour localiser un goulot d'étranglement avec preuves.
- Expliquer ce que verrouille le GIL et choisir threads ou processus en conséquence.
- Construire des services asyncio soutenant des milliers d'opérations d'E/S concurrentes.
- Diagnostiquer compétitions, interblocages et erreurs d'annulation en code concurrent.
- Remplacer les boucles chaudes interprétées par NumPy, du cache ou des extensions natives.
- Dimensionner workers, pools et mémoire pour gagner en débit sans déstabiliser la production.
Public cible
- Développeurs backend expérimentés maintenant des services Python en charge
- Ingénieurs data exploitant des pipelines batch et streaming hors délais
- Ingénieurs plateforme et SRE enquêtant sur la latence et l'épuisement des ressources
- Ingénieurs machine learning optimisant inférence et pipelines de features
- Développeurs quantitatifs et scientifiques aux charges numériques intensives
- Architectes décidant où Python doit passer à l'échelle et où il ne le doit pas
Programme
Une structure claire pour le parcours d'apprentissage.
Programme
Les points du programme sont regroupés dans un seul bloc au lieu de créer un module par ligne.
Module 1 : Mesurer avant d'optimiser
Profilage avec cProfile, py-spy et chronométrage ligne à ligne sur charge réelle
Profilage mémoire avec tracemalloc et détection des rétentions d'objets involontaires
Mesurer honnêtement avec timeit dans des conditions stables
Distinguer goulots liés au CPU, aux entrées-sorties et à la mémoire
Module 2 : Le GIL, les threads et les processus
Ce que le GIL sérialise réellement et ce qu'il laisse libre
threading pour la concurrence d'E/S et le seuil où il cesse d'aider
multiprocessing, pools de processus et coût caché de la sérialisation
concurrent.futures comme interface unique sur les deux modèles d'exécution
Module 3 : Python asynchrone avec asyncio
Boucle d'événements, coroutines, tâches et ce que await suspend réellement
Piloter des milliers d'appels HTTP concurrents avec httpx ou aiohttp
Délais, sémantique d'annulation et comparaison entre gather et TaskGroup
Appeler des bibliothèques bloquantes depuis du code async sans bloquer la boucle
Module 4 : Exactitude en contexte concurrent
Compétitions, verrous, sémaphores et schémas classiques d'interblocage
Files, pools de workers et contre-pression appliquée aux producteurs rapides
Idempotence et réessais sûrs au sein de pipelines concurrents
Reproduire et déboguer délibérément des défaillances concurrentes intermittentes
Module 5 : Rendre le code Python rapide
Complexité algorithmique et choix de structures qui dominent le temps d'exécution
Vectoriser les calculs numériques avec NumPy plutôt qu'en boucles interprétées
Mise en cache avec functools.lru_cache et via une couche de cache externe
Accélération native comparée : extensions C, Cython et Numba
Module 6 : Passage à l'échelle et comportement en production
Dimensionner workers, pools de connexions et budget mémoire par processus
Traitement en flux et par lots pour stabiliser la mémoire à volume croissant
Tester la charge d'un service Python et interpréter les percentiles de latence
Optimiser une charge réelle, de la première mesure au gain vérifié
Supports fournis
- Manuel de formation, exemples de code commentés et notes de référence
- Environnement de laboratoire et dépôts de démarrage
- Exercices, check-lists et modèles de code réutilisables
- Certificat de participation 4D
- Accompagnement technique après la formation
Options de formation
Les programmes peuvent être organisés en entreprise, en ligne ou dans un format hybride selon le calendrier, la localisation et les objectifs de vos équipes. Lorsqu'un certificat ou un examen externe est inclus, les règles et frais de certification restent soumis aux politiques de l'organisme certificateur, tandis que 4D assure la formation et l'accompagnement à la préparation.
Pourquoi choisir 4D
4D profile en séance l'un de vos points d'entrée lents ou l'une de vos étapes de pipeline : les participants constatent l'écart entre le goulot supposé et celui que révèle le profileur. Le travail d'optimisation est mené jusqu'à un chiffre avant-après mesuré, utilisable dans une discussion budgétaire sur les coûts d'infrastructure.
Formations liées
Fondamentaux de la programmation Python
Une introduction pratique à Python pour les ingénieurs et analystes qui ont besoin de code opérationnel plutôt que d'extraits de tutoriel. Les participants acquièrent de l'aisance avec les types, les collections, les fonctions, les fichiers et la gestion des erreurs, puis construisent un programme complet.
View coursePython intermédiaire et pratiques de code propre
Conçue pour les développeurs dont le code Python fonctionne mais résiste au changement. Le programme couvre dataclasses, générateurs, décorateurs, gestionnaires de contexte et annotations de types, puis applique les refactorings qui transforment un module interminable en unités testées contrôlées par black, ruff et mypy.
View courseAutomatisation et scripting Python pour les tâches métier
Destinée aux équipes qui perdent chaque semaine des heures en manipulations de fichiers, de tableurs et de rapports. Les participants automatisent ces tâches avec Python : traitement de fichiers en lot, Excel et CSV, appels d'API REST, alertes par e-mail et tâches planifiées qui signalent clairement toute défaillance.
View course