Python Dispatch : Rendre la GIL optionnelle
Le Conseil de pilotage a fait une grande annonce concernant l'avenir de Python. Ils ont notamment décidé de rendre le verrouillage global de l'interprète (GIL) facultatif dans CPython et, à terme, de supprimer complètement le GIL.
Il s'agit d'une décision importante qui modifiera fondamentalement Python.
C'est pourquoi, dans ce billet, je vais expliquer ce qu'est l'EIG, ses avantages et ses inconvénients, et ce que l'avenir lui réserve.
Le GIL
Permettez-moi de parcourir l'Écluse de l'interprète global, un mot à la fois, dans l'ordre inverse, en commençant par serrure et ensuite interprète et enfin, mondial.
Un verrou est un mécanisme qui ne permet qu'à un seul thread de s'exécuter à la fois. Ainsi, lorsqu'un thread s'empare du verrou, il obtient un accès exclusif à l'interpréteur Python.
Un l'interpréteur est le programme qui exécute le code Python.
Le mot "global" fait ici référence à la portée du verrou de l'interprète. Le verrouillage de l'interpréteur étant global, il garantit qu'un seul thread exécute le code Python à la fois au sein d'un même processus.
La GIL est donc un mécanisme qui empêche l'exécution simultanée de plusieurs threads dans l'interpréteur. Mais pourquoi voudriez-vous cela ?
Avantages
Le principal avantage de la GIL est qu'elle facilite les choses. La gestion de la mémoire est plus facile, la gestion des threads est donc plus facile, et la création de modules est donc plus facile.
Sans la GIL, vous pouvez rapidement rencontrer des problèmes avec le multithreading. Si vous ne mettez pas en place les verrous locaux appropriés pour chaque thread, vous risquez de faire planter Python ou de corrompre une autre mémoire de l'ordinateur.
Et si vous ne faites pas de multithreading, la GIL est très utile, car elle assure le bon fonctionnement de l'ensemble.
La GIL permet donc de simplifier les choses et de les rendre plus sûres.
Alors pourquoi ne le voudriez-vous pas ?
Inconvénients
Le compromis ici est la facilité pour la rapidité.
En empêchant le multithreading, la GIL rend CPython plus lent et moins performant que d'autres langages (comme C++, Go et Rust).
Avec l'explosion de l'IA au cours des derniers mois, la GIL devient de plus en plus un problème pour l'exécution rapide et efficace des programmes.
L'avenir de la GIL
Maintenant que le Conseil directeur a annoncé qu'il acceptait l'accord de l'Union européenne, il est temps de passer à l'action. Proposition d'amélioration de Python (PEP) 703, rédigée par Sam GrossNous entrons dans des eaux inexplorées.
D'innombrables extensions ont été écrites en tenant compte de la GIL. Toutes les normes établies avec CPython dépendent de la GIL. Tout le monde construit en CPython avec la GIL au centre de ses programmes (intentionnellement ou non).
Ainsi, le Conseil de pilotage rend l'IME facultatif dans un premier temps, mais à long terme, il prévoit de l'éliminer complètement.
Comme ils l'ont indiqué dans le message, "nous ne voulons pas créer un clivage permanent entre les constructions (et les modules d'extension) avec ou sans GIL".
Cela va absolument transformer Python et, ce qui est peut-être le plus intéressant, d'une manière que personne ne connaît encore. Brett Cannon, dans un sondage adressé à l'équipe des développeurs de baseIl a écrit que "rendre Python libre de threads... comporte beaucoup d'inconnues. Nous ne savons pas combien de code repose implicitement sur la GIL, ou n'est pas sûr pour les threads de manière subtile qui est masquée par la GIL".
Le GIL disparaît - que va-t-il emporter avec lui ?
Et, plus important encore, à quoi ressemblera le nouveau CPython ?