Ajouter un commentaire

Python 3.13 : plongée au coeur du JIT

Par:
francoistonic

lun, 23/09/2024 - 15:15

Real Python propose une présentation de deux fonctionnalités de Python 3.13 :

- Free Threading

- compilateur JIT.

Le Free Threading est un élément important pour mieux exploiter la puissance CPU. "En résumé, le GIL permet à un seul thread d'exécution de fonctionner à un moment donné, quel que soit le nombre de cœurs dont votre processeur est équipé. Cela empêche Python de tirer parti efficacement de la puissance de calcul disponible." Le PEP 703 résume ainsi l'intérêt du Free Threading : "Le verrou global de l'interpréteur (GIL) de CPython empêche plusieurs threads d'exécuter du code Python simultanément. Le GIL constitue un obstacle à l'utilisation efficace des processeurs multi-cœurs avec Python. Cette PEP propose d'ajouter une configuration de compilation (--disable-gil) à CPython pour permettre l'exécution du code Python sans le verrou global de l'interpréteur, ainsi que les modifications nécessaires pour rendre l'interpréteur sécurisé pour les threads."

Cependant, retirer le GIL n'est pas sans conséquence sur l'interpréteur en lui-même et les codes. Actuellement, il n'est pas question de supprimer le GIL du langage mais à le rendre optionnel quand cela sera possible. Un PEP à suivre !

Autre élément important de Python 3.13 : le compilateur JIT. Python est une langage fondamentalement interprété. Le PEP 744 vise à intégrer un compilateur juste à temps, comme nous en trouvons dans d'autres langages, le plus connu étant celui de Java. L'objectif est de fournir des exécutables plus rapides et de produire des bytecodes performants. Il exite plusieurs JIT externes (PyPy, Pyjion). Le compilateur JIT de la 3.13 est une version expérimentale qui pourrait être intégré par défaut au langage. 

Quelques liens :

https://realpython.com/python313-free-threading-jit/

https://peps.python.org/pep-0744/

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
 X   X  K  K      J  FFFF  V     V 
X X K K J F V V
X KK J FFF V V
X X K K J J F V V
X X K K JJJ F V