A menudo veo gente hablando de que el GIL es por intérprete de Python (incluso aquí en stackoverflow).¿El Python GIL es realmente por intérprete?
Pero lo que veo en el código fuente parece ser que el GIL es una variable global y, por lo tanto, hay un GIL para todos los intérpretes en cada proceso de python. Sé que lo hicieron porque no hay un objeto interpretado como lua o TCL, simplemente no fue diseñado al principio. Y el almacenamiento local de subprocesos parece no ser portátil para que lo usen los chicos de Python.
¿Es esto correcto? Eché un vistazo a la versión 2.4 que estoy usando en un proyecto aquí.
¿Ha cambiado esto en versiones posteriores, especialmente en 3.0?
Muchos proyectos han eliminado antes el GIL de CPython. Unladen Swallow no es el primero. Sin embargo, no funcionaron tan bien como la versión de GIL, por lo que nadie los usa. – nosklo
Además, stackless no elimina el GIL. De hecho, cualquier operación de bloqueo en cualquier microthread sin apilamiento bloqueará la aplicación completa. – nosklo
Y Jython es tan lento que tampoco se puede usar, a menos que solo lo use para un plugin de scripts en un programa Java donde la mayor parte del trabajo se hace en Python. – Lothar