Читать книгу Python a fondo - Óscar Ramírez Jiménez - Страница 65
1.16.3 PyPy
ОглавлениеLa implementación de CPython es a veces criticada por ser lenta, y una solución podría ser implementar un JIT ("compilador en tiempo de ejecución" o just-in-time compiler) que permita compilar el código en tiempo de ejecución, manteniendo así el carácter interpretado e interactivo, pero con el potencial de compilar el código mejorando su velocidad de ejecución. Para mejorar ese aspecto se creó PyPy (https://pypy.org/).
PyPy es una implementación de Python en C que cuenta con un JIT, lo que permite que su ejecución sea desde 0.23 hasta 4.4 veces más rápida, según afirman es su web de comparación de tiempos de ejecución https://speed.pypy.org/.
Otra característica de PyPy es que posee lo que se conoce como stackless mode, que permite desacoplar el código a la hora de ejecutarse. Esto permite generar minihilos de ejecución para conseguir una concurrencia de código masiva, hace que la ejecución de diferentes partes del código sea casi paralela en tiempo de ejecución y mejora muchísimo la velocidad de ejecución de los programas.
Un aspecto para tener en cuenta de PyPy es la compatibilidad con librerías en general, dado que implementa una versión reducida de Python, RPython (reduced Python). Por este motivo, no es compatible con todos los programas escritos en Python, pero se han encargado de dar soporte a librerías y frameworks grandes como Django o Twisted, entre otros.
Actualmente soporta Python 2 y Python 3, por lo que puede ser una gran herramienta a tener en cuenta y usar cuando el proyecto lo permita para mejorar mucho la velocidad de ejecución o aprovechar la capacidad del modo stackless.