La semaine dernière, j’ai commencé cette série de blogues en deux parties sur l’augmentation de la vitesse de Python grâce à Cython et PyPy. Alors que nous avons déjà discuté des effets de Cython, je voulais continuer la discussion avec un regard sur PyPy et ensuite un contraste à la fois de PyPy et de Cython.
Qu’est-ce que PyPy ?
PyPy est un interpréteur Python alternatif et un compilateur juste-à-temps (JIT) qui est hautement compatible (sous réserve de quelques réserves) avec l’interpréteur CPython. Il est conçu pour la vitesse et l’efficacité et utilise un compilateur JIT de traçage pour optimiser les parties fréquemment exécutées du programme au moment de l’exécution, augmentant ainsi la vitesse d’exécution.
PyPy exécute des programmes Python réguliers ; en général, aucune modification ne doit être apportée au code Python pour lui permettre de s’exécuter sur PyPy. En raison de la nature du compilateur JIT, il a besoin de temps pour analyser les parties fréquemment exécutées du programme, il fonctionne donc mieux sur les programmes qui s’exécutent pendant plus de quelques secondes.
Peut-être que le plus grand obstacle à l’utilisation de PyPy dans un système de production est son manque de support pour les modules d’extension CPython. Selon la documentation de PyPy, le support des modules d’extension est expérimental et fonctionne souvent beaucoup plus lentement que dans CPython. Cela signifie que certaines bibliothèques tierces qui ont des modules d’extension C peuvent ne pas fonctionner sur PyPy – la bibliothèque de calcul scientifique NumPy en est un exemple notable. Cela dit, PyPy est capable d’exécuter la majorité des frameworks et bibliothèques Python populaires, tels que Django, Flask et SQLAlchemy.
La page Wikipédia de PyPy et le site Web de PyPy fournissent de nombreuses informations sur ce qu’est PyPy et comment l’utiliser ; ce dernier a également une section agréable qui montre une liste de benchmarks et leurs améliorations de vitesse par rapport à CPython.
La page Wikipedia de PyPy et le site web de PyPy fournissent beaucoup d’informations sur ce qu’est PyPy et comment l’utiliser ; ce dernier a aussi une belle section qui montre une liste de benchmarks et leurs améliorations de vitesse par rapport à CPython.
Comment Cython vs CPython fonctionne
Mon objectif principal en faisant cet exercice était de comprendre comment les outils fonctionnent, et d’être capable de comparer les différences de syntaxe et de structure de code entre eux. Dans cette optique, j’ai choisi d’écrire un programme d’intégration numérique simple, qui est basé sur un exemple donné dans la documentation de Cython. La source complète du projet, y compris les instructions d’installation et de construction de Cython, se trouve sur Bitbucket.