La fundación Python publicó Python 3.13 a principios del mes de octubre de 2024. La evolución técnica principal de esta versión es la introducción del modo «Free-threaded» definido en la implementación de la PEP 703, que desactiva el GIL (Global Interpreter Lock).
En claro
Hasta ahora, un intérprete de Python funcionaba como una sala por la que circula un único micrófono: podían coexistir varios hilos, pero solo uno tomaba la palabra a la vez, porque el GIL les impedía ejecutar bytecode simultáneamente. En una máquina con varios núcleos, eso equivalía a dejar sin utilizar parte de la potencia disponible en cuanto un programa intentaba calcular en paralelo. Python 3.13 hace que ese bloqueo sea opcional: ahora el intérprete puede compilarse de manera que reparta la carga de cálculo entre todos los núcleos físicos disponibles, sin crear un bloqueo. La reserva es importante: la funcionalidad se propone con carácter experimental, el GIL permanece activo de forma predeterminada y las bibliotecas desarrolladas en C deben adaptarse. Se trata, por tanto, del comienzo de una transición, no de un cambio inmediato.
Ficha de la versión
| Parámetro | Valor |
|---|---|
| Versión | Python 3.13 |
| Editor | fundación Python |
| Publicación | principios del mes de octubre de 2024 |
| Evolución técnica principal | introducción del modo «Free-threaded» |
| Especificación | PEP 703 — Making the Global Interpreter Lock Optional in CPython |
| Efecto técnico | desactivación del GIL (Global Interpreter Lock) |
| Puesta en práctica | compilación del intérprete por parte del desarrollador |
| Estado | experimental — el GIL permanece activo de forma predeterminada |
| Requisito del ecosistema | adaptación de las bibliotecas desarrolladas en C |
| Alcance previsto | ejecución de hilos en verdadero paralelo en arquitecturas multinúcleo |
Explicación técnica
1. Lo que bloqueaba el GIL — Históricamente, el GIL impedía que varios hilos de un mismo intérprete de Python ejecutaran bytecode simultáneamente.
2. El coste en los procesadores multinúcleo — Esta restricción limitaba fuertemente el rendimiento de las aplicaciones en paralelo en procesadores multinúcleo.
3. Lo que permite el modo Free-threaded — Con esta versión, los desarrolladores tienen la posibilidad de compilar el intérprete de manera que reparta la carga de cálculo entre todos los núcleos físicos disponibles, sin crear un bloqueo.
Antes y después
| Aspecto | Intérprete con GIL | Modo Free-threaded (Python 3.13) |
|---|---|---|
| Ejecución del bytecode | un solo hilo de un mismo intérprete a la vez | hilos en verdadero paralelo |
| Núcleos aprovechados | rendimiento de las aplicaciones en paralelo fuertemente limitado en procesadores multinúcleo | carga de cálculo repartida entre todos los núcleos físicos disponibles |
| Bloqueo | bloqueo global sobre la ejecución del bytecode | ningún bloqueo introducido |
| Activación | comportamiento predeterminado | compilación específica del intérprete, con carácter experimental |
| Bibliotecas desarrolladas en C | comportamiento histórico | adaptación necesaria |
Cadena causal
GIL presente históricamente en el intérprete → un solo hilo ejecuta bytecode a la vez → rendimiento de las aplicaciones en paralelo fuertemente limitado en procesadores multinúcleo → PEP 703: hacer que el bloqueo sea opcional → Python 3.13 introduce el modo Free-threaded → el intérprete puede compilarse para repartir el cálculo entre todos los núcleos físicos disponibles → adaptación de las bibliotecas desarrolladas en C → transición del ecosistema Python hacia una plena optimización multinúcleo
Límites y alcance
Aunque esta funcionalidad se propone con carácter experimental (el GIL permanece activo de forma predeterminada) y exige la adaptación de las bibliotecas desarrolladas en C, esta publicación inicia la transición del ecosistema Python hacia una plena optimización multinúcleo.
Fuentes
Referencias verificadas durante la auditoría factual de agosto de 2026: son las páginas
con las que se han contrastado las afirmaciones de este boletín.
