Para complementar la respuesta de Adam:
- Python GIL es un artefacto de la implementación * CPython *. Otras implementaciones (f.ex Jython) no necesariamente sufren las limitaciones de GIL.
- Los hilos en Python son hilos POSIX reales, y se distribuirán en múltiples procesadores / núcleos. Sin embargo, * nunca * se ejecutarán simultáneamente. Se ejecutará un hilo de Python si y solo si no se están ejecutando otros hilos.
- Para evitar esto, la forma recomendada es usar el módulo de multiprocesamiento, que genera procesos en lugar de hilos: http://docs.python.org/library/m…
- Sin embargo, los procesos (que utiliza el módulo de multiprocesamiento) son más pesados que los subprocesos. La regla es: los hilos colaboran, los procesos compiten. Es importante tener en cuenta este éxito de rendimiento.