PyPy utiliza técnicas de optimización que se encuentran en otros compiladores just-in-time para lenguajes dinámicos; es por ello la pregunta principal ¿Cómo funciona PyPy de Python?, Analiza la ejecución de programas Python para determinar el tipo de información de los objetos a medida que se crean y utilizan en los programas, luego usa ese tipo de información como guía para acelerar las cosas. Por ejemplo, si una función de Python funciona con solo uno o dos tipos de objetos diferentes, PyPy genera código de máquina para manejar esos casos específicos.
Las optimizaciones de PyPy se manejan automáticamente en tiempo de ejecución, por lo que generalmente no es necesario modificar su rendimiento. Un usuario avanzado puede experimentar con las opciones de la línea de comandos de PyPy para generar un código de Python más rápido para casos especiales, pero esto solo es necesario en raras ocasiones.
Por esa razón y muchas otras más no menos importantes, es que te recomendamos este curso de python profesional, el cual lo imparten de manera presencial o en linea, con instructores expertos en este lenguaje de programación.
PyPy también se aparta de la forma en que CPython maneja algunas funciones internas, pero intenta preservar comportamientos compatibles. Por ejemplo, PyPy maneja la recolección de basura de manera diferente. No todos los objetos se recopilan inmediatamente una vez que salen del alcance, por lo que un programa Python que se ejecuta en PyPy puede mostrar una huella de memoria mayor que cuando se ejecuta en CPython. Pero aún puede usar los controles de recolección de basura de alto nivel de Python expuestos a través del módulo gc, como gc.enable (), gc.disable () y gc.collect ().
Si deseas información sobre el comportamiento JIT de PyPy en tiempo de ejecución, PyPy incluye un módulo, pypyjit, que expone muchos enlaces JIT a su aplicación Python. Si tienes una función o módulo que parece estar funcionando mal con el JIT, pypyjit permite obtener estadísticas detalladas al respecto.
Otro módulo específico de PyPy, __pypy__, expone otras características específicas de PyPy, por lo que puede ser útil para escribir aplicaciones que aprovechen esas características. Debido al dinamismo en tiempo de ejecución de Python, es posible construir aplicaciones que usen estas características cuando PyPy esté presente y las ignore cuando no lo esté.
Por mágico que parezca PyPy, no es mágico. PyPy tiene ciertas limitaciones que reducen u obvian su efectividad para ciertos tipos de programas. Por desgracia, no es un reemplazo completamente universal para el tiempo de ejecución de CPython estándar.
Con todo, PyPy siempre se ha desempeñado mejor con aplicaciones Python "puras", es decir, aplicaciones escritas en Python y nada más. A los paquetes que interactúan con las bibliotecas C, como NumPy, no les ha ido tan bien debido a la forma en que PyPy emula las interfaces binarias nativas de CPython.
Pero los desarrolladores de PyPy han reducido este problema y se han preguntado ¿Cómo funciona PyPy de Python? han hecho que PyPy sea más compatible con la mayoría de los paquetes de Python que dependen de las extensiones C. Numpy, por ejemplo, ahora funciona muy bien con PyPy. Pero si deseas la máxima compatibilidad con las extensiones C, usa CPython.
Uno de los efectos secundarios de cómo PyPy optimiza los programas de Python es quecuanto más tiempo se ejecuta el programa, más información de tipo de tiempo de ejecución puede recopilar PyPy y más optimizaciones puede realizar. Las aplicaciones que sí se benefician suelen tener bucles que se ejecutan durante largos períodos de tiempo o se ejecutan continuamente en segundo plano, por ejemplo, marcos web.
Diseño Web Grupo Codesi