CPython, Cython, PyPy… Una guía introductoria a las diferentes variantes de Python

Dic 19, 2021
admin

Si te dedicas a la programación en Python, es probable que hayas escuchado las palabras CPython, Cython, Jython, PyPy… Sin embargo, ¿qué son exactamente?

En este artículo haremos una pequeña introducción a algunas de estas variantes de Python, para que al menos puedas entender a qué se refieren exactamente si las ves en cualquier otro contexto.

CPython

CPython es la implementación original de Python, la que probablemente usarás a diario y que puedes descargar oficialmente desde python.org. Su nombre viene del hecho de que el código Python se compila a bytecode utilizando C.

Jython

Jython es una implementación alternativa que utiliza Java, en lugar de C, para obtener el bytecode. Esto permite que este bytecode se ejecute en la JVM, la máquina virtual de Java, al igual que otros lenguajes como Kotlin, Scala o el propio Java.

Como Jython es una implementación más, la sintaxis no cambia: puedes coger todo tu código CPython y ejecutarlo en Jython sin necesidad de cambiar ni una sola línea.

Cython

Cython es un compilador que permite escribir extensiones de C para Python, normalmente con el objetivo de hacerlo más eficiente. A diferencia de los ejemplos anteriores, no es una implementación diferente: utiliza CPython para ejecutar el código Python. Se puede considerar un superconjunto de Python, ya que contiene toda su funcionalidad y añade las capacidades extra de C sobre ella.

Estas extensiones están escritas en una sintaxis específica, muy similar a la que utilizarás para escribir el código C equivalente. Veamos este ejemplo (del sitio de Wikipedia de Cython)

def sum_up_to_n(n): a = 0 for i in range(n): a += i return acpdef sum_up_to_n(int n): cdef int a = 0, i for i in range(n): a += i return a

PyPy

Con PyPy, tenemos otra implementación de Python como CPython o Jython. El punto interesante de esta implementación es que está implementada en… el propio Python (sí, probablemente esto te haya dejado boquiabierto, así que sigue leyendo para entender lo que queremos decir con esto)

El núcleo de PyPy es un compilador Just-In-Time (JIT) que utiliza para compilar las partes más repetidas de tu código fuente al código nativo de la máquina (en lugar de bytecode, como hacían CPython o Jython). Ejecutar código nativo es más eficiente que ejecutar bytecode, por lo que esto puede resultar en grandes mejoras de velocidad, incluso teniendo en cuenta el tiempo que se utilizará para compilar el código.

PyPy tiene mucha información detallada sobre sus ventajas (y desventajas) en su página web, así como algunos consejos de rendimiento y recomendaciones sobre qué casos pueden no ser los más adecuados para él, así que te animo a que lo consultes si estás interesado.

Resumen

Después de este artículo, deberías estar más familiarizado con los conceptos de CPython, Jython, Cython y PyPy. Sin embargo, es probable que estés interesado en aprender más sobre ellos, por lo que he preparado una lista de enlaces que pueden ser realmente útiles si quieres profundizar en el tema. Espero que os resulten útiles

Enlaces útiles

  • Python.org – Implementaciones alternativas de Python
  • La guía definitiva de Jython
  • Sitio oficial de Cython
  • Sitio oficial de PyPy
  • Compilación justo a tiempo
  • Artículo en Toptal sobre implementaciones de Python

.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.