Le Global Interpreter Lock (GIL) de Python est un mutex qui ne permet qu'à un seul thread d'accéder à l'interpréteur Python à la fois. Cela empêche par conception les véritables processus multithreadés en Python. Le GIL a été implémenté pour prévenir les conditions de concurrence et simplifier la collecte des déchets par comptage de références. Aux débuts de Python, les processeurs mono-cœur et la moindre demande de multithreading rendaient le GIL bénéfique pour la simplicité du code. Cependant, les processeurs multi-cœur modernes mettent en évidence les limitations du GIL pour l'exécution parallèle. Pour obtenir de la concurrence, les développeurs Python utilisent souvent la bibliothèque `multiprocessing`, qui contourne le GIL en créant des processus séparés. Le `multiprocessing` nécessite des modèles de programmation différents, tels que l'utilisation de `Queues` et de `Locks` pour la communication inter-processus. La suppression du GIL est un objectif de longue date dans la communauté Python, avec des efforts récents conduisant à une suppression optionnelle du GIL dans Python 3.13. La suppression du GIL introduit des complexités, en particulier en ce qui concerne le comptage de références thread-safe. Le comptage de références biaisé est une solution proposée pour maintenir l'efficacité tout en garantissant la sécurité des threads sans le GIL.
blog.jetbrains.com
PyCharm: Faster Python: Unlocking the Python Global Interpreter Lock
