Diferencia entre varias implementaciones de Python

Cuando hablamos de Python , a menudo nos referimos no solo al lenguaje sino también a la implementación. Python es en realidad una especificación para un lenguaje que se puede implementar de muchas maneras diferentes.

Antecedentes
Antes de continuar, comprendamos la diferencia entre el código de bytes y el código de máquina (código nativo).
Código de máquina ( también conocido como código nativo )
El código de máquina es un conjunto de instrucciones que la CPU ejecuta directamente. Cada instrucción realiza una tarea única, como la carga o una operación lógica sobre los datos en la memoria de la CPU. Casi todos los lenguajes de alto nivel, como C, traducen el código fuente a un código de máquina ejecutable con la ayuda de compiladores, cargadores y enlazadores. Cada procesador o familia de procesadores tiene su propio conjunto de instrucciones de código de máquina. código de bytes
machine

Bytecode también es una representación binaria ejecutada por una máquina virtual (no por la CPU directamente). La máquina virtual (que se escribe diferente para diferentes máquinas) convierte la instrucción binaria en una instrucción de máquina específica. Uno de los lenguajes que utiliza el concepto de Bytecode es Java.
byte

Machine Code es mucho más rápido en comparación con Bytecode, pero Bytecode es portátil y seguro en comparación con Machine Code.

Implementaciones de Python
Cpython
La implementación predeterminada del lenguaje de programación Python es Cpython. Como su nombre indica, Cpython está escrito en lenguaje C. Cpython compila el código fuente de Python en un código de bytes intermedio, que es ejecutado por la máquina virtual de Cpython. CPython se distribuye con una gran biblioteca estándar escrita en una combinación de C y Python. CPython proporciona el más alto nivel de compatibilidad con los paquetes de Python y los módulos de extensión de C. Todas las versiones del lenguaje Python se implementan en C porque CPython es la implementación de referencia.
Algunas de las implementaciones que se basan en el núcleo de tiempo de ejecución de CPython pero con un comportamiento o funciones ampliadas en algunos aspectos son Stackless Python, wpython, MicroPython.
Python sin pila– CPython con énfasis en la concurrencia usando tasklets y canales (usado por dspython para Nintendo DS)

Otras implementaciones
También existen otras implementaciones del lenguaje Python. Las únicas implementaciones que se sabe que son compatibles con una versión determinada del lenguaje son IronPython , Jython y PyPy .

Jython
Jython es una implementación del lenguaje de programación Python que puede ejecutarse en la plataforma Java. Los programas de Jython usan clases de Java en lugar de módulos de Python. Jython se compila en código de bytes de Java, que luego puede ejecutarse mediante una máquina virtual de Java. Jython permite el uso de funciones de la biblioteca de clases de Java desde el programa Python. Jython es lento en comparación con Cpython y carece de compatibilidad con las bibliotecas de CPython.
geeks

IronPython
Una implementación de Python escrita en C# dirigida al marco .NET de Microsoft. Similar a Jython, utiliza .Net Virtual Machine, es decir , Common Language Runtime . IronPython puede usar las bibliotecas .NET Framework y Python, y otros lenguajes .NET pueden usar el código Python de manera muy eficiente. IronPython funciona mejor en programas de Python que usan subprocesos o múltiples núcleos, ya que tiene un JIT y también porque no tiene el bloqueo de intérprete global .

PyPy
«Si desea que su código se ejecute más rápido, probablemente debería usar PyPy». — Guido van Rossum (creador de Python)
Python es un lenguaje de programación dinámico. Se dice que Python es lento ya que la implementación predeterminada de CPython compila el código fuente de Python en bytecode, que es lento en comparación con el código de máquina (código nativo). Aquí entra en juego PyPy.
PyPy es una implementación del lenguaje de programación Python escrito en Python. El intérprete está escrito en RPython (un subconjunto de Python).

flo

Utiliza PyPy ( compilación justo a tiempo ). En términos simples, JIT usa métodos de compilación para hacer que el sistema de interpretación sea más eficiente y rápido. Entonces, básicamente, JIT hace posible compilar el código fuente en un código de máquina nativo, lo que lo hace muy rápido.
PyPy también viene por defecto con soporte para el modo sin pila, proporcionando micro-hilos para una concurrencia masiva. Se dice que Python es aproximadamente 7,5 veces más rápido que Cpython.

Algunas otras implementaciones de Python son CLPython , Pyston , Psyco , Cython , IPython .

Referencias:

Este artículo es una contribución de Saurabh Daalia . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *