No tengo claro por qué existe la API del sub-intérprete y por qué se usa en módulos como el módulo apache mod_wsgi. ¿Se utiliza principalmente para crear un recinto de seguridad para diferentes aplicaciones que se ejecutan dentro del mismo proceso, o es una forma de permitir la concurrencia con varios subprocesos? ¿Tal vez ambos? ¿Hay otros propósitos?
Me imagino que el propósito es crear entornos de ejecución de Python separados. Por ejemplo, mod_wsgi (módulo de Apache Python) aloja un solo intérprete de Python y luego aloja múltiples aplicaciones dentro de los sub-intérpretes (en la configuración predeterminada).
Algunos puntos clave de la documentación :
__builtin__
, __main__
y sys
. Como lo entendí por última vez, la idea era poder ejecutar múltiples aplicaciones, así como múltiples copias de la misma aplicación dentro del mismo proceso.
Esta es una característica que se encuentra en otros lenguajes de secuencias de comandos (por ejemplo, TCL), y es de particular uso para los desarrolladores de GUI, servidores web, etc.
Se rompe en Python porque muchas extensiones no son seguras para intérpretes múltiples, por lo que las acciones de un intérprete podrían afectar las variables en otro intérprete.