• El intérprete de Python es inteligente a la hora de generar los .pyc , y si ya se han generado los ficheros pyc y no ha habido cambios en el fichero fuente, no realiza ninguna compilación, simplemente usa los ficheros ya compilados, agilizando así el proceso de iniciar la aplicación.
Como en cualquier otro proceso de compilación, cuando se lanza un programa usando el intérprete de Python, se pueden configurar los parámetros de forma que:
• Eviten que se generen los .pyc (opción –B).
• Se puedan ejecutar módulos directamente (opción –m).
• Se pueda pasar el programa como una cadena de caracteres (opción –c).
• Se pueda ajustar la cantidad de warnings emitidos por el intérprete (opción –W).
• Se pueda utilizar la optimización del código eliminando los asserts y los docstrings (opción –O y –OO).
Si, por ejemplo, se quisiera crear ficheros compilados (utilizando el módulo compileall, https://docs.python.org/3/library/compileall.html) y optimizados, se podría ejecutar el siguiente comando:
1.16 IMPLEMENTACIONES DE PYTHON
Cuando se habla de la implementación de Python, normalmente se hace referencia a la implementación usando C, denominada CPython.No obstante, el intérprete puede ser implementado también en otros lenguajes. Las diferencias entre implementaciones están, principalmente, en la habilidad de usar librerías (y otros programas) escritas en algún lenguaje específico. Por ejemplo, Pandas o NumPy están escritas en C y, por tanto, de forma nativa no pueden ser ejecutadas en intérpretes que no sean CPython. De todas formas, otras implementaciones de Python pueden permitir el uso de librerías que no están disponibles para CPython utilizando otras técnicas. A continuación, se detallan las implementaciones más conocidas del lenguaje.
La implementación original del lenguaje y la que se menciona por defecto es CPython.Es una implementación del lenguaje hecha en ANSI C y es la más utilizada. El intérprete genera byte codes desde los ficheros fuente para ejecutarlos en la máquina virtual de Python, y esta los ejecuta.
Si un sistema operativo tiene una versión de Python preinstalada, lo más seguro es que la implementación sea CPython. Es el software que se puede descargar de la web oficial del lenguaje ( http://www.python.org).
Si se pretende crear código que sea lo más compatible posible o software libre, y no se tiene una restricción fuerte o una dependencia con algún otro lenguaje (como Java o C#), lo mejor es optar por CPython, dado que es el estándar, siempre se mantiene más actualizada, soporta la interoperabilidad con librerías escritas en C y, normalmente, es muy rápida en tiempo de ejecución si se compara con la mayoría de las demás implementaciones.
Existe una implementación de Python hecha sobre la máquina virtual de Java (JVM) denominada Jython( https://www.jython.org/). También se conoce como JPython, y su principal ventaja es que puede ejecutarse junto a código Java.
La principal diferencia es que el código fuente Python es transformado de forma transparente a byte codes de Java y ejecutado como cualquier otro programa escrito nativamente en Java, lo que permite la interoperabilidad completa y ejecutar código Python como si fuera código nativo en la misma máquina virtual. Esto permite importar librerías de Java sin problema como si fueran librerías de Python y viceversa.
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 compatiblecon 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.
Existe una implementación en C# de Python que está integrada perfectamente en el framework .NET. Se llama IronPython( https://ironpython.net/) y permite la integración transparente con C#.
Por tanto, es una gran herramienta para desarrolladores .NET que quieran utilizar un lenguaje de scripting y todos los beneficios de Python para crear proyectos nuevos.
1.17 DESARROLLAR PROGRAMAS EN PYTHON (IDE)
Para poder desarrollar aplicaciones Python, solo se necesitan un editor de texto y el intérprete de Python, pero como en todos los lenguajes de programación, existen programas especializados para hacer que esta tarea sea más fácil e intuitiva. En muchas ocasiones estos programas ahorran tiempo de desarrollo gracias a sus herramientas integradas. Este tipo de programas se denominan IDE( integrated development environment , entorno de desarrollo integrado).
Los IDE ayudan en muchas partes del desarrollo, dado que pueden pro-veer la documentación estándar o librerías externas de forma intuitiva y corregir errores gramaticales o código que potencialmente no se vaya a ejecutar correctamente. También pueden proveer herramientas prácticas como conexiones a servidores remotos, integración con sistemas de control de versiones o herramientas de integración continua, así como facilitar el despliegue o publicación de aplicaciones y un largo etcétera. Además, en la mayoría de los casos permiten personalizar el editor para que se adapte a los gustos del desarrollador.
1.17.1 Entornos de desarrollo open source
En esta categoría se verán los entornos de desarrollo open source más utilizados para desarrollar Python. Se mencionarán algunos trucos o recomendaciones para mejorar la experiencia de su uso y las características principales de cada uno. Se han ordenado según su especialización para desarrollar programas en Python, de menor especialización (más generales) a más específicos.
Vim
Vim(Vi Improved, https://www.vim.org/) es el IDE utilizado por muchos desarrolladores para distintos lenguajes de programación. Cuenta con plugins y soporte para Python, lo que lo convierte en un potente editor. Algunas características de este editor son:
Читать дальше