Resumen / Puntos clave
El Mito de Python 3.13 que Creíste
Se prometió un cambio sísmico con Python 3.13. Los desarrolladores anticiparon con entusiasmo el advenimiento de un Python verdaderamente paralelo, impulsado por una enorme expectación en torno a PEP 703 y su potencial para eliminar el Global Interpreter Lock (GIL). Esta característica experimental sugería el fin de la limitación de larga data de Python en cargas de trabajo multi-hilo ligadas a la CPU, anunciando mejoras significativas en el rendimiento.
Fundamentalmente, se ha arraigado un malentendido generalizado: la instalación de Default Python 3.13 NO elimina el GIL. Muchos desarrolladores que actualizan a la última versión instalaron Python, Wrong sin saberlo, perdiendo una distinción vital. La compilación estándar mantiene el GIL, anulando las mismas mejoras de rendimiento que buscaban.
En consecuencia, los equipos que migran sus aplicaciones a Python 3.13 a menudo no observan ninguna mejora de rendimiento en su código multi-hilo. Sus tareas ligadas a la CPU continúan ejecutándose secuencialmente, limitadas por el Global Interpreter Lock tal como lo estaban en Python 3.12. Esto lleva a una confusión y frustración generalizadas, ya que las prometidas aceleraciones de 4x permanecen completamente fuera de alcance.
Este desconcertante estancamiento se debe a la instalación de la versión convencional de Python, no de la versión especializada diseñada para un verdadero paralelismo. Las capacidades sin GIL ampliamente publicitadas están bloqueadas detrás de una compilación específica, un matiz pasado por alto por la mayoría. Most Devs Installed Python, Wrong, eligiendo inadvertidamente el camino de la ejecución continua de un solo núcleo para sus operaciones concurrentes.
Desbloquear todo el potencial de Python 3.13 requiere un enfoque completamente diferente. Los desarrolladores deben abandonar la suposición de que una simple actualización de versión proporciona libertad del GIL. La solución real, que la mayoría de los desarrolladores están pasando por alto, implica una free-threaded build distinta de Python 3.13, que ofrece el camino genuino hacia el procesamiento multinúcleo y la prometida revolución del rendimiento.
Conoce al Gemelo Sobrealimentado de Python: La 'T-Build'
Python 3.13 introduce una free-threaded build oficial, un intérprete completamente separado diseñado para un verdadero paralelismo multinúcleo. A menudo identificada por un sufijo '-t', como `python3.13t`, esta versión especializada aborda explícitamente las limitaciones del Global Interpreter Lock (GIL) que durante mucho tiempo ha restringido la concurrencia de CPython. Most Devs Installed Python, Wrong, si esperaban la eliminación automática del GIL.
Esto no es una configuración predeterminada; es una experiencia de suscripción voluntaria. Los desarrolladores deben elegir deliberadamente esta compilación, que compila el intérprete con el crucial flag --disable-gil. Este flag altera fundamentalmente la arquitectura interna de CPython, reemplazando el mecanismo de bloqueo de grano grueso del GIL con un sistema de atomic reference counting más granular para la gestión de memoria. Este cambio desbloquea la capacidad del intérprete para ejecutar múltiples hilos de Python simultáneamente en diferentes núcleos de CPU, una desviación significativa de las versiones anteriores.
Las implicaciones de rendimiento son sustanciales para las cargas de trabajo ligadas a la CPU. Mientras que el Default Python 3.13, todavía con GIL habilitado, lucha por utilizar múltiples núcleos, `python3.13t` puede lograr aceleraciones dramáticas. Los benchmarks muestran que las tareas intensivas en CPU se ejecutan hasta 4x más rápido, exhibiendo un paralelismo real en los procesadores disponibles. Por ejemplo, el mismo código ligado a la CPU en la misma máquina, Default Python 3.13 termina en aproximadamente dos segundos y medio mientras apenas usa los núcleos de la CPU. Pero Python 3.13t termina en menos de medio segundo con paralelismo real.
Los desarrolladores pueden instalar tanto el Python 3.13 estándar como su gemelo free-threaded simultáneamente. En Windows o macOS, el instalador oficial ofrece una casilla de verificación "free-threaded", creando ejecutables separados. Los usuarios de Linux y aquellos que gestionan entornos con `pyenv` pueden solicitar específicamente `pyenv install 3.13t`. Verificar un entorno sin GIL es sencillo: Abre Python 3.13t y ejecuta `sys.is_gil_enabled()`. Un retorno `False` confirma la desactivación exitosa del GIL, indicando que realmente estás ejecutando sin el GIL.
Sin embargo, este poder conlleva compromisos. El código de un solo hilo (single-threaded) podría ejecutarse entre un 30 y un 50% más lento debido a la sobrecarga del conteo de referencias atómicas. Además, algunas extensiones C requieren ser reconstruidas o actualizadas para asegurar la compatibilidad con el entorno con el GIL deshabilitado. Pero Python 3.13t ofrece un potencial inmenso para servicios con gran carga computacional. Los desarrolladores no deberían migrar todo de la noche a la mañana. En su lugar, deben apuntar a trabajadores en segundo plano con gran carga de CPU (CPU-heavy background workers) específicos, procesamiento de datos o servicios de computación intensiva para la adopción de `python3.13t`, probando cuidadosamente los flujos de trabajo reales con herramientas como UV o pyenv.
Escapando de la Trampa de Instalación
Un paso en falso crítico espera a muchos desarrolladores ansiosos por aprovechar las capacidades experimentales sin GIL de Python 3.13: asumir que una actualización o instalación estándar proporciona la versión free-threaded. La mayoría de los desarrolladores instalaron Python 3.13 incorrectamente, porque el ejecutable `python3.13` que obtienes por defecto todavía incluye el Global Interpreter Lock, haciendo que tu código multi-hilo no se ejecute más rápido que Python 3.12. Necesitas la versión especial `python3.13t`.
En Windows y macOS, obtener la versión free-threaded es sencillo pero requiere atención. Al ejecutar el instalador oficial de Python 3.13, asegúrate de localizar y marcar la opción específica "free-threaded build". Esta acción instala tanto el ejecutable estándar `python3.13` como el especializado `python3.13t`.
Los usuarios de Linux y aquellos que gestionan múltiples versiones de Python con herramientas como `pyenv` disfrutan de un comando más simple. Instala la variante free-threaded directamente ejecutando `pyenv install 3.13t`. Este comando maneja las banderas de compilación específicas necesarias para compilar Python sin el GIL, proporcionando a tu sistema el intérprete `3.13t`.
Para usuarios avanzados o aquellos que construyen entornos personalizados, compilar Python desde el código fuente ofrece un control granular. Al configurar tu compilación, pasa la opción `--disable-gil` al script `./configure`. Esta acción asegura que el binario de Python resultante se ejecute sin el GIL, ofreciendo todos los beneficios del verdadero paralelismo para tareas ligadas a la CPU (CPU-bound).
Nunca asumas que tu instalación funcionó sin verificación. Abre Python 3.13t y ejecuta `sys.is_gil_enabled()`. Si esta función devuelve `False`, estás ejecutando con éxito la versión free-threaded. Para una inmersión más profunda en los esfuerzos experimentales de eliminación del GIL, consulta la documentación oficial: What's New In Python 3.13 — Python 3.14.5rc1 documentation.
Recuerda, un simple `pip install --upgrade python` o una actualización del gestor de paquetes *no* proporcionará el Python sin GIL. Debes apuntar explícitamente a la versión `3.13t` o compilar con `--disable-gil`. Ignorar este paso crucial de instalación deja tus aplicaciones multi-hilo restringidas por el mismo bloqueo que Python 3.13 busca superar.
Confía, Pero Verifica: ¿Tu GIL Realmente Desapareció?
Después de navegar por el laberinto de instalación en Windows y macOS, un paso crítico permanece: la verificación. 'No asumas que funcionó' es el mantra aquí, una salvaguarda crucial contra la ejecución de tu código con el Global Interpreter Lock aún habilitado. La mayoría de los desarrolladores instalaron Python incorrectamente, incluso después de seguir las instrucciones del instalador para Python 3.13.
Python 3.13 introduce una nueva función dedicada para este propósito exacto: `sys.is_gil_enabled()`. Esta verificación esencial está disponible exclusivamente en Python 3.13 y versiones posteriores, proporcionando una respuesta definitiva sobre si su intérprete de Python opera con o sin el GIL. Sin esta función específica, verificar el estado del GIL sería significativamente más complejo.
Para realizar esta verificación, simplemente abra Python desde su terminal. Si instaló la free-threaded build, invóquela explícitamente como `python3.13t` o `py -3.13t`. Y luego, importe el `sys` module y ejecute la función.
```python import sys sys.is_gil_enabled() ```
Al ejecutar una free-threaded build correctamente instalada, la salida será `False`. Esto confirma que su intérprete está funcionando sin el GIL, desbloqueando el verdadero paralelismo prometido por PEP 703 para tareas CPU-bound multi-hilo. Este `False` indica que su código ahora puede aprovechar múltiples CPU cores.
Por el contrario, si ejecuta el mismo comando en un entorno Default Python 3.13 – la versión que la mayoría de los desarrolladores instalan – el resultado será `True`. Esto indica que el GIL permanece activo, limitando efectivamente el código Python multi-hilo a un solo núcleo, a pesar de todo el revuelo en torno a la eliminación del GIL. Esta distinción es vital para el rendimiento.
Por lo tanto, verifique siempre su entorno Python. La diferencia entre `True` y `False` no es solo un booleano; es la puerta de entrada a una ejecución potencialmente 2-4 veces más rápida para cargas de trabajo CPU-heavy, pero Python 3.13t exige esta verificación explícita.
El aumento de velocidad 4X oculto a plena vista
Con la free-threaded build surgen diferencias dramáticas de rendimiento, alterando fundamentalmente cómo Python aprovecha el hardware moderno. Para tareas intensivas CPU-bound, la `t-build` revela un aumento de velocidad transformador, moviendo a Python de un cuello de botella de un solo núcleo a una verdadera utilización multi-núcleo. Esto no es simplemente una optimización; es un cambio de paradigma.
Considere la comparación directa del video: código CPU-bound idéntico ejecutándose en la misma máquina. Default Python 3.13, aún obstaculizado por el Global Interpreter Lock (GIL), completa esta tarea en aproximadamente dos segundos y medio. Crucialmente, lo logra utilizando apenas los CPU cores, dejando la gran mayoría de la potencia de procesamiento inactiva e incapaz de ejecutar bytecode de Python concurrentemente.
Pero Python 3.13t rompe esta limitación histórica, terminando la misma carga de trabajo en menos de medio segundo. Esta specialized build logra su notable ritmo al saturar completamente los CPU cores disponibles, demostrando real parallelism a medida que múltiples hilos se ejecutan simultáneamente a través del procesador. Esto no es teórico; es una utilización tangible del hardware previamente inalcanzable en CPython para operaciones multi-hilo.
Este marcado contraste proviene del cambio de diseño fundamental de la `t-build`, específicamente la implementación de PEP 703. Libera los hilos de Python de la restricción de ejecución secuencial del GIL, permitiéndoles ejecutarse verdaderamente de forma concurrente en núcleos de procesador separados sin bloqueos y desbloqueos constantes. Esto desbloquea el paralelismo de hardware real inherente en las CPU multi-core modernas, transformando cómo escalan las aplicaciones de Python.
Para muchas aplicaciones computacionalmente intensivas, esto se traduce directamente en un aumento de velocidad 4x para cargas de trabajo CPU-bound estructuradas apropiadamente. El ejemplo de benchmark, que se completa en menos de medio segundo en comparación con dos y medio, ilustra vívidamente esta mejora dramática. Dependiendo del número de núcleos disponibles y de las demandas computacionales específicas, las aceleraciones a menudo pueden superar significativamente el 4x, redefiniendo fundamentalmente las expectativas de rendimiento para Python en áreas como el procesamiento de datos, la computación científica o los servicios en segundo plano con gran carga computacional.
El inconveniente: cuando deshabilitar el GIL te ralentiza
Si bien Python 3.13t promete una velocidad notable para tareas paralelas, existe una compensación significativa. Deshabilitar el Global Interpreter Lock (GIL) introduce una penalización sustancial en el rendimiento para el código de un solo hilo, a menudo ralentizándolo entre un 30% y un 50% en comparación con la compilación tradicional con GIL habilitado. Esto significa que cualquier parte de su aplicación no diseñada explícitamente para la concurrencia podría experimentar una degradación notable en la velocidad de ejecución, lo que podría hacer que su sistema general sea más lento si no se gestiona con cuidado.
Esta ralentización se debe a cambios fundamentales en la arquitectura interna de Python. La compilación free-threaded reemplaza el mutex de grano grueso y punto único del GIL con mecanismos de bloqueo más granulares y atomic reference counting para cada objeto Python. Estas nuevas medidas de seguridad, esenciales para mantener la integridad de los datos en múltiples hilos sin un bloqueo central, introducen una sobrecarga inherente. Cada operación de objeto ahora incurre en verificaciones y costos de sincronización adicionales, impidiendo los mismos atajos de rendimiento disponibles cuando el GIL imponía un acceso secuencial estricto.
Más allá de la velocidad de ejecución, la huella de memoria también experimenta un impacto notable. Los primeros informes sugieren que Python free-threaded puede consumir 2-3 veces más memoria que su contraparte con GIL habilitado. Este aumento en el consumo surge de los metadatos adicionales y la sobrecarga requeridos para la gestión de objetos segura para hilos y las estructuras de bloqueo más complejas. Tales demandas de memoria se convierten en un factor crítico para aplicaciones intensivas en memoria, procesamiento de datos a gran escala o despliegue en entornos con recursos limitados, lo que requiere una cuidadosa elaboración de perfiles y planificación de recursos.
En consecuencia, la compilación `python3.13t` no es una solución universal para todo el código Python. Este intérprete especializado brilla exclusivamente en escenarios donde las tareas son genuinamente CPU-bound y pueden beneficiarse del verdadero paralelismo multinúcleo, como trabajadores en segundo plano pesados, procesamiento de datos complejos o servicios intensivos en computación. Para scripting de propósito general, aplicaciones I/O-bound o bases de código aún no optimizadas para la concurrencia, el Default Python 3.13, con su rendimiento predecible de un solo hilo, a menudo sigue siendo la opción superior y más estable.
Otra consideración crítica involucra las C extensions. La mayoría de las extensiones existentes, compiladas bajo la suposición de la presencia del GIL, requerirán una reconstrucción o actualizaciones significativas para funcionar correctamente con la compilación free-threaded. Los desarrolladores deben asegurarse de que sus dependencias sean compatibles; las extensiones que admiten la ejecución sin el GIL deben utilizar explícitamente el slot `Py_mod_gil`. Para obtener más información técnica y orientación sobre la adaptación de extensiones, consulte la documentación oficial de Python support for free threading — Python 3.14.5rc1 documentation. No asuma la compatibilidad; es esencial realizar pruebas rigurosas de toda su pila de dependencias antes de la migración.
Navegando por el campo minado de las C Extensions
Python 3.13 sin GIL libera el paralelismo, pero las extensiones C existentes presentan un obstáculo significativo. Muchas bibliotecas y herramientas populares, compiladas contra versiones anteriores de Python, dependen implícitamente del Global Interpreter Lock para la seguridad de los hilos. Sin el GIL, estas extensiones se vuelven inestables, propensas a fallos o introducen condiciones de carrera sutiles y difíciles de depurar a medida que múltiples hilos intentan modificar recursos compartidos simultáneamente.
Históricamente, el GIL actuó como un mutex general, asegurando que solo un hilo ejecutara bytecode de Python a la vez. Las extensiones C a menudo omitían mecanismos de bloqueo explícitos y salvaguardas de secciones críticas, confiando en el GIL para gestionar el acceso concurrente a estructuras de datos compartidas. Eliminar esta protección fundamental expone estas extensiones a problemas graves, exigiendo una reevaluación completa de sus modelos de subprocesamiento y primitivas de sincronización explícitas como mutexes u operaciones atómicas. Los desarrolladores deben portar o reescribir secciones sustanciales de su código C para que sean verdaderamente seguras para hilos.
Python ofrece el slot `Py_mod_gil` dentro de su estructura de definición de módulo para esta transición crítica. Las extensiones deben declarar explícitamente su compatibilidad con la compilación sin GIL estableciendo este slot, señalando que manejan la concurrencia sin la protección del GIL. Esta bandera crucial le dice al intérprete de Python si una extensión puede operar de forma segura en un entorno sin GIL. Sin esta declaración explícita, el intérprete asume por defecto la dependencia del GIL, lo que podría negarse a cargar la extensión o causar inestabilidad inmediata.
Tenga cuidado con una advertencia crucial: algunos paquetes de terceros podrían detectar un entorno sin GIL y volver a habilitar proactivamente el GIL internamente para garantizar su propia estabilidad y prevenir fallos inesperados. Si bien esto evita fallos inmediatos, anula por completo los beneficios de rendimiento de ejecutar una compilación de Python sin GIL para cualquier código que interactúe con ese paquete específico. Los usuarios deben examinar sus árboles de dependencias y verificar que todas las extensiones C críticas admitan el modelo de ejecución sin GIL, asegurándose de que realmente desbloquean el potencial paralelo de Python. Esto requiere pruebas cuidadosas y, potencialmente, esperar actualizaciones de la biblioteca upstream.
Su Guía de Migración sin GIL
Desbloquear el verdadero potencial de Python con la compilación sin GIL requiere un despliegue estratégico, no una migración masiva. Identifique los cuellos de botella de su aplicación. El entorno sin GIL brilla más en escenarios con uso intensivo de CPU que exigen paralelismo genuino. Esto incluye trabajadores en segundo plano que procesan grandes conjuntos de datos, simulaciones de computación científica intensivas y pipelines de procesamiento de datos a gran escala. Los microservicios con gran carga computacional también obtienen ganancias significativas, aprovechando múltiples núcleos para ejecutar tareas concurrentes simultáneamente. Aquí, el potencial de mejoras de velocidad de 4x, como se demuestra en benchmarks con código multihilo ligado a la CPU, se convierte en una realidad tangible, transformando los tiempos de ejecución.
Por el contrario, la compilación predeterminada de Python 3.13 sigue siendo la opción óptima para muchos casos de uso comunes. Las aplicaciones ligadas a E/S, como los servidores web de alto tráfico que aprovechan `asyncio` para operaciones de red concurrentes, no obtienen ninguna ventaja de la eliminación del GIL; su rendimiento depende de factores externos como consultas a bases de datos o llamadas a API, no de la ejecución de Python ligada a la CPU. Del mismo modo, los scripts de un solo hilo se ejecutan demostrablemente más lentos en la compilación sin GIL. Pueden experimentar una caída significativa del rendimiento del 30-50% debido al aumento de la sobrecarga del conteo de referencias atómico, que reemplaza las optimizaciones internas del GIL.
Por lo tanto, no intente migrar toda su aplicación de la noche a la mañana; tal enfoque corre el riesgo de introducir más problemas de los que resuelve. Un manual más inteligente y pragmático implica precisión quirúrgica: identifique y aísle solo los componentes verdaderamente limitados por la CPU dentro de su código. Ejecute estos módulos o servicios específicos en un entorno Python `free-threaded` separado y dedicado. Esta estrategia mitiga los riesgos del "C Extension Minefield" y evita regresiones de rendimiento en otras partes de su aplicación, asegurando que maximice los beneficios donde son más impactantes sin comprometer la estabilidad o la velocidad general. Se trata de una optimización dirigida.
Aproveche herramientas robustas de gestión de entornos para facilitar esta migración dirigida sin problemas. Utilidades como `pyenv` y `uv` permiten a los desarrolladores aprovisionar, gestionar y cambiar fácilmente entre diferentes compilaciones de Python en la misma máquina. Puede configurar entornos específicos, quizás ejecutando `pyenv install 3.13t` para apuntar específicamente a la compilación `free-threaded` para sus componentes de alto rendimiento, mientras mantiene el default Python 3.13 para el resto. Esta flexibilidad asegura que implemente el Python adecuado para el trabajo adecuado, maximizando el rendimiento en toda su pila sin compromisos y simplificando las pruebas de diferentes configuraciones.
Más allá de 3.13: El futuro de un Python sin GIL
La compilación `free-threaded` de Python 3.13 marca un primer paso audaz y experimental, no el destino final. Esta transición de varios años introduce una compilación paralela, sentando las bases para un Python verdaderamente concurrente. Representa un cambio fundamental, similar a cómo las primeras versiones de Python establecieron la sintaxis central antes de las optimizaciones importantes.
Las futuras iteraciones de Python, comenzando con Python 3.14, refinarán esta arquitectura. Los desarrolladores están trabajando activamente para mitigar la sobrecarga de rendimiento de un solo hilo del 30-50% observada en las compilaciones `free-threaded` iniciales. Espere mejoras significativas en la gestión de memoria y una mejor compatibilidad para las extensiones C existentes, crucial para una adopción más amplia.
La visión a largo plazo es clara: la compilación `free-threaded` aspira a convertirse en el default Python. Las discusiones de la comunidad apuntan a Python 3.16 o 3.17 como posibles objetivos para este cambio trascendental, estableciendo un nuevo estándar para la ejecución de Python. Esto requiere amplias actualizaciones del ecosistema y una estabilidad robusta.
Esta empresa rivaliza con la escala y complejidad de la histórica migración de Python 2 a Python 3. Demanda un esfuerzo concertado de los desarrolladores principales y la comunidad en general para asegurar una transición fluida para bibliotecas y aplicaciones. Las características tempranas, como `sys.is_gil_enabled()`, fueron adiciones críticas, como se ve en discusiones como [Add sys._is_gil_enabled() #117514 - python/cpython - GitHub], allanando el camino para que los desarrolladores verifiquen el estado del GIL.
El veredicto final: ¿Debería hacer el cambio hoy?
Reiteramos: "No migre todo de la noche a la mañana." La free-threaded build en Python 3.13, aunque revolucionaria, exige una cuidadosa consideración. Representa un cambio arquitectónico significativo, no una simple actualización de versión para todos los proyectos. Aborde esta transición estratégicamente, evitando una mentalidad de reemplazo total.
¿Considerando el cambio para un proyecto específico? Evalúe estos factores críticos antes de comprometerse con la compilación `free-threaded`. Esta no es una actualización universal; es una herramienta especializada para cuellos de botella de rendimiento específicos.
Los desarrolladores deberían preguntar: - ¿Su aplicación es demostrablemente CPU-bound y está diseñada para un verdadero multi-threading? El potencial aumento de velocidad de 4x solo se manifiesta con paralelismo real. - ¿Ha verificado la compatibilidad de todas las extensiones C críticas? Muchas bibliotecas existentes requieren recompilación o actualizaciones para funcionar correctamente sin el GIL. - ¿Puede su equipo comprometerse a realizar pruebas de rendimiento rigurosas en cargas de trabajo del mundo real? Espere posibles ralentizaciones del 30-50% para operaciones Single-threaded debido al aumento de la sobrecarga. - ¿Está preparado para gestionar dos entornos Python distintos si es necesario? El ejecutable `python3.13t` existe junto con el Default Python 3.13.
Fomente una cultura de experimentación implacable. Despliegue la compilación free-threaded en entornos controlados, luego compare meticulosamente el rendimiento con su configuración existente de Python 3.12 o Default Python 3.13. Confiar, pero verificar: ¿Su GIL realmente ha desaparecido? sigue siendo primordial. Solo los datos de su caso de uso específico revelarán el verdadero impacto.
En última instancia, la compilación free-threaded no es una solución mágica, sino una nueva y poderosa flecha en el carcaj de Python. Cuando se aplica juiciosamente a cargas de trabajo apropiadas —como workers en segundo plano con uso intensivo de CPU, computación científica o procesamiento de datos—, desbloquea una era de rendimiento paralelo verdadero previamente inalcanzable. Este paso experimental en Python 3.13 traza un rumbo emocionante para el futuro del lenguaje.
Preguntas Frecuentes
¿Qué es el Python GIL?
El Global Interpreter Lock (GIL) es un mutex que permite que solo un hilo ejecute bytecode de Python a la vez dentro de un solo proceso, limitando el verdadero paralelismo para tareas CPU-bound en procesadores multi-core.
¿Se elimina el GIL por defecto en Python 3.13?
No. La compilación estándar de Python 3.13 todavía tiene el GIL habilitado. Debe instalar la compilación especial 'free-threaded' (a menudo llamada python3.13t) para ejecutar sin él.
¿Cómo verifico si el GIL está deshabilitado en mi entorno Python?
En un intérprete de Python 3.13+, ejecute `import sys` y luego `sys.is_gil_enabled()`. Un valor de retorno de `False` confirma que el GIL está deshabilitado para ese intérprete.
¿Deshabilitar el GIL hará que todo mi código Python sea más rápido?
No necesariamente. Proporciona aceleraciones significativas para código multi-threaded y CPU-bound. Sin embargo, el código single-threaded y algunas C extensions pueden ejecutarse más lento debido a la nueva sobrecarga.