Je vois souvent des gens dire que le GIL est par interpréteur Python (même ici sur stackoverflow).Le Python GIL est-il vraiment par interprète?
Mais ce que je vois dans le code source semble être que le GIL est une variable globale et donc il y a un GIL pour tous les interprètes dans chaque processus python. Je sais qu'ils l'ont fait parce qu'il n'y a pas d'objet d'interprète circulant comme lua ou TCL, ce n'était tout simplement pas bien conçu au début. Et le stockage local des threads ne semble pas portable pour les pythons.
Est-ce correct? J'ai regardé brièvement la version 2.4 que j'utilise dans un projet ici.
Avait-il changé dans les versions ultérieures, en particulier dans 3.0?
De nombreux projets ont déjà supprimé le GIL de CPython. Hirondelle à jeun n'est pas la première. Cependant, ils ne fonctionnent pas aussi bien que la version GIL, donc personne ne les utilise. – nosklo
Aussi, stackless ne supprime pas le GIL. En fait, toute opération de blocage dans un microtreadless sans pile bloquera toute l'application. – nosklo
Et Jython est si lent qu'il est inutilisable aussi - à moins que vous ne l'utilisiez pour un plugin de script pour un programme java où la plupart du travail est fait en Python. – Lothar