Python est un langage au typage dynamique et qui fournit une gestion automatique de l'allocation mémoire. Cette gestion automatique facilite et accélère grandement le processus de développement, simplifiant le travail du développeur. L'utilisation d'un “garbage collector” permet de libérer ces espaces mémoire de manière automatisée.
Cependant, tout ceci a un coût et impose des contraintes de performance, particulièrement dans le cas de Python pour l'utilisation de tâches exécutées sous forme de threads (un thread est un processus indépendant). Ainsi Python reste limité dans sa capacité à effectuer de véritables opérations multithread en raison du Global Interpreter Lock (GIL), un mécanisme de verrouillage qui empêche plusieurs threads d'exécuter des instructions Python simultanément sur le même espace mémoire, limitant ainsi l'exploitation des environnements multicœurs.
Après une trentaine d'années, cette limite a été surmontée grâce à un contributeur de Python, Eric Snow. Cette avancée va permettre à Python de fournir une capacité d'exécution multitâche et multicœur performante. Il est désormais possible d'avoir des sous-interpréteurs, chacun avec leur propre GIL indépendant, et ce sans risquer de redoutables fuites de mémoire, d'erreurs, ou de pertes de performance.
Ce changement majeur devrait bientôt impacter un très grand nombre de bibliothèques, que ce soit dans le domaine des applications web et de services backend, à l'instar de Django, mais également dans des domaines variés tels que le calcul scientifique, l'entraînement de modèles de langage (AI) et leur exploitation, les data pipelines, les analyses big data, le traitement d'images ou de vidéos, et bien d'autres.
L'introduction pour Python 3.12, encore nouvelle, promet une intégration plus homogène pour Python 3.13. Une page se tourne sur l'un des aspects les plus critiques du langage, ce que nous accueillons avec joie dans nos équipes.
Auteur : Simon ANDRE