¿Qué es PyPY?

PyPy es una alternativa a CPython, la implementación más usada del lenguaje Python, que ofrece mejoras en sus prestaciones, en términos de rendimiento. En este artículo te explicamos cuáles son las ventajas de PyPy y sus aplicaciones más importantes.

Básicamente se trata de un intérprete diferente para el lenguaje, que se puede usar del mismo modo que se usa CPython. El reemplazo es directo, de modo que podemos intercambiar CPython por PyPy en unos instantes y comenzar a beneficiarnos de un mayor rendimiento, prácticamente sin cambiar nada en el código del proyecto.

La velocidad de PyPy es sensiblemente superior a la del intérprete CPython. Depende mucho del tipo de aplicación y el código utilizado, pero de media se puede multiplicar por 4 su rendimiento, lo que resulta muy relevante si tenemos en consideración el poco esfuerzo que supone la implementación de PyPy. Esto lo consigue mediante una estrategia de compilación «just-in-time» (JIT).

Compatibilidad de PyPy versus CPython

PyPy está disponible para las versiones Python 2 y 3. Ofrece compatibilidad para toda la funcionalidad «core» de Python y la mayoría de los módulos estándar del lenguaje. Aunque, desafortunadamente, no es compatible con todas las librerías.

En cuanto a compatibilidad en las plataformas de ejecución, es posible usar PyPy en la mayoría de los sistemas operativos, incluidos Windows, Linux y Mac.

Qué tipo de aplicación mejora gracias a PyPy

La mayoría de las aplicaciones se ejecuta bien sobre PyPy, aunque las mejoras serán percibidas cuando se trata de programas que requieren un tiempo considerable de procesamiento, donde una fracción relevante de ese tiempo se consuma en ejecutar código Python real. En concreto existen dos requisitos para que se obtenga mayor rendimiento:

  • Que las aplicaciones o procesos sean medianamente complejos, ya que si se tienen que ejecutar unas pocas decenas de líneas de código el compilador JIT no tendrá el tiempo suficiente para demostrar sus ventajas.
  • Que la principal parte del código a ejecutar sea realmente código Python y no librerías run-time, como por ejemplo funciones C, en las PyPy no puede optimizar su ejecución.

Por contra, cuando existen muchas dependencias de extensiones CPython no se recomienda usar PyPy, ya que las aplicaciones pueden llegar a fallar o bien hacerse más lentas. Aunque sean pocas, es importante entender que algunas aplicaciones Python no se ejecutan bien sobre PyPy. La mejor vía para comprobar si es viable para un proyecto es instalarlo y experimentar en un entorno de pruebas. Podemos descargar e instalar PyPy con las instrucciones de la página de descargas. http://pypy.org/download.html

PyPy para la web

Como hemos dicho, PyPy es capaz de obtener mayor rendimiento cuando la complejidad del procesamiento es alto. Pero esta no suele ser una constante en los sitios web, donde la mayoría de las operaciones son de entrada/salida.

Sin embargo, existe toda una comunidad de usuarios de PyPy con proyectos en funcionamiento en frameworks tan sofisticados como Django. Las mejoras que anuncian son relevantes, obteniendo entre 3 y 4 veces más rendimiento para solicitudes complejas. Pero yendo al detalle, lo cierto es que CPython consigue responder de manera más rápida a una renderización de una página con pocos datos. En estos casos PyPy no podrá ofrecer mucha mejora, pero sí es capaz de optimizar el tiempo de CPU dedicado para las operaciones de su ORM, lo que se notará si es necesario realizar una mediana o gran cantidad de consultas por solicitud.

Otra de las desventajas que podemos encontrar con PyPy es que no se puede usar bien con el servidor Apache. Sin embargo, esto no es un gran problema, ya que funciona de manera estupenda usando un servidor HTTP basado en Python y Nginx como proxy inverso.