Chaque fois que deux threads ont accès à la même variable, vous avez un problème. En C++ par exemple, la façon d'éviter le problème est de définir un verrou mutex pour empêcher deux threads de, disons, entrer dans le setter d'un objet en même temps.
Le multithreading est possible en python, mais deux threads ne peuvent pas être exécutés en même temps avec une granularité plus fine qu'une instruction python. Le thread en cours d'exécution obtient un verrou global appelé GIL.
Cela signifie que si vous commencez à écrire du code multithreadé pour profiter de votre processeur multicœur, votre performance ne s'améliorera pas. La solution habituelle consiste à passer au multiprocessus.
Il est possible de libérer le GIL si vous vous trouvez à l'intérieur d'une méthode que vous avez écrite en C par exemple.
L'utilisation d'un GIL n'est pas inhérente à Python mais à certains de ses interprètes, y compris le plus courant CPython. (#édité, voir commentaire)
Le problème du GIL est toujours d'actualité dans Python 3000.
3 votes
Regardez David Beazley vous dire tout ce que vous avez toujours voulu savoir sur le GIL.
1 votes
Voici un long article sur le GIL et le threading en Python que j'ai écrit il y a quelque temps. Il va en détail sur le sujet : jessenoller.com/2009/02/01/…
0 votes
Voici un code démontrant les effets du GIL : github.com/cankav/python_gil_demonstration
3 votes
Je trouve que c'est la meilleure explication de GIL. Veuillez lire. dabeaz.com/python/UnderstandingGIL.pdf
0 votes
realpython.com/python-gil J'ai trouvé cela utile