Langages de programmation : Python est lent, mais il s’agit de devenir plus rapide

Python est incroyablement populaire car il est facile à apprendre, polyvalent et possède des milliers de bibliothèques utiles pour la science des données. Mais une chose ce n’est pas rapide.

Cela est sur le point de changer dans Python 3.11, actuellement dans la première phase bêta de son aperçu (version 3.11.0b1) avant sa version stable plus tard cette année. Le développeur de Core Python (CPython), Mark Shannon, a partagé des détails sur le projet visant à rendre Python plus rapide lors de la conférence PyCon 2022 cette semaine, où les développeurs ont également montré des progrès sur l’objectif d’exécuter du code Python dans le navigateur.

L’année dernière, Microsoft a financé un projet pour la Python Software Foundation (PSF), dirigé par le créateur de Python Guido van Rossum et Shannon, pour rendre Python deux fois plus rapide que la série 3.10 stable actuelle. La vision est de pousser Python vers les performances de C.

Voir : Comment être promu : Cinq façons de gravir les échelons et de réussir sa carrière

Microsoft a embauché van Rossum en 2020 et lui a donné carte blanche pour reprendre n’importe quel projet. Lors de la conférence PyCon 2021 de l’année dernière, il a déclaré qu’il “avait choisi de revenir à mes racines” et qu’il travaillerait sur le célèbre manque de performances de Python.

Les performances n’ont peut-être pas été une priorité absolue pour Python, car l’adoption a été alimentée par l’apprentissage automatique et la science des données grâce à Tensor Flow, Numpy, Pandas et bien d’autres plates-formes, telles que le SDK Boto3 d’AWS pour Python. Ces plates-formes sont téléchargées des dizaines de millions de fois par mois et utilisées dans des environnements souvent non contraints par le matériel.

Le projet Faster CPython a fourni des mises à jour sur les performances de CPython 3.11 au cours de l’année écoulée. Avant PyCon 2022, le projet a publié plus de résultats comparant l’aperçu bêta 3.11 à 3.10 sur des dizaines de mesures de performances, montrant que 3.11 était globalement 1,25 fois plus rapide que 3.10.

Shannon est réaliste quant à la capacité du projet à améliorer les performances de Python, mais pense que les améliorations peuvent étendre l’utilisation viable de Python à davantage de machines virtuelles.

“Python est largement reconnu comme lent. Alors que Python n’atteindra jamais les performances des langages de bas niveau comme C, Fortran ou même Java, nous aimerions qu’il soit compétitif avec des implémentations rapides de langages de script, comme V8 pour Javascript ou luajit pour lua”, a-t-il écrit l’année dernière dans la Python Enhancement Proposal (PEP) 659.

“Plus précisément, nous voulons atteindre ces objectifs de performances avec CPython pour bénéficier à tous les utilisateurs de Python, y compris ceux qui ne peuvent pas utiliser PyPy ou d’autres machines virtuelles alternatives.”

L’approche clé détaillée dans la PEP 659 est un “interpréteur spécialisé et adaptatif qui spécialise le code de manière agressive, mais sur une très petite région, et est capable de s’adapter rapidement et à faible coût à une mauvaise spécialisation”.

Comme indiqué, les optimisations pour les machines virtuelles sont “coûteuses”, nécessitant souvent un long temps de “préchauffage”. Pour éviter cette dépense de temps, la machine virtuelle doit « supposer que la spécialisation est justifiée même après quelques exécutions d’une fonction », de sorte que l’interpréteur doit optimiser et désoptimiser continuellement et à très bon marché.

Cela devrait se traduire par un interpréteur plus rapide pour CPython qui suit les bytecodes individuels lors de l’exécution d’un programme. Le travail sur le nouvel interpréteur est presque terminé mais nécessite encore l’achèvement des spécialisations dynamiques pour les boucles et les opérations binaires, selon PSF.

De plus, la consommation de mémoire dans la version 3.11 n’a pas changé depuis la version 3.10.

VOIR : Les développeurs sont confrontés à l’épuisement professionnel. Voici comment les entreprises tentent d’y remédier

Sur la question d’un compilateur juste-à-temps (JIT) pour les performances de Python, Shannon a suggéré que ce n’était pas une priorité et qu’il n’arriverait probablement pas avant Python 3.13, selon la couverture de l’événement par la Python Software Foundation.

Anaconda, le créateur de la distribution Anaconda Python pour la science des données, soutient le projet Pyston, une implémentation de Python qui promet des améliorations de vitesse par rapport à Python.

L’un des efforts les plus anciens d’Anaconda pour accélérer Python était le projet Numba, un compilateur JIT basé sur LLVM pour CPython, qui accélère les fonctions Python numériques exécutées sur le CPU ou le GPU, mais ne peut pas optimiser des programmes entiers et ne traite pas l’utilisation plus large de Python. cas. Un autre est PyPy, une implémentation de CPython avec un compilateur JIT pour des performances plus rapides.

Selon le plan d’implémentation de Faster Python, CPython 3.12 pourrait gagner un “compilateur JIT simple pour les petites régions” qui compile de petites régions de code spécialisé, tandis que 3.13 améliorerait le compilateur pour étendre les régions pour la compilation.

Leave a Comment

Your email address will not be published. Required fields are marked *