12 pitones para cada necesidad de programación

Cuando elige Python para el desarrollo de software, elige un gran ecosistema de lenguaje con una gran cantidad de paquetes que cubren todo tipo de necesidades de programación. Pero además de las bibliotecas para todo, desde el desarrollo de GUI hasta el aprendizaje automático, también puede elegir entre varios tiempos de ejecución de Python, y algunos de estos tiempos de ejecución pueden adaptarse mejor al caso de uso que tiene a mano que otros.

Aquí hay un breve recorrido por las distribuciones de Python, desde la implementación estándar (CPython) hasta las versiones optimizadas para la velocidad (PyPy), para casos de uso especiales (Anaconda, ActivePython), para diferentes tiempos de ejecución de lenguajes (Jython, IronPython) e incluso para cortar- experimentación de borde (PyCopy, MesaPy).

CPython

CPython es la implementación de referencia de Python, la versión estándar que buscan todas las demás encarnaciones de Python. CPython está escrito en C, como lo implica el nombre, y es producido por el mismo grupo central de personas responsables de todas las decisiones de alto nivel sobre el lenguaje Python.

Casos de uso de CPython

Dado que CPython es la implementación de referencia de Python, es la más conservadora en términos de sus optimizaciones. Esto es por diseño. Los mantenedores de Python quieren que CPython sea la implementación de Python más compatible y estandarizada disponible.

CPython es su mejor opción cuando la compatibilidad y conformidad con los estándares de Python importan más que el rendimiento en bruto y otras preocupaciones. CPython también es útil para el experto que quiere trabajar con Python en su encarnación más fundamental y que está dispuesto a renunciar a ciertas comodidades. 

Por ejemplo, con CPython, debe hacer un poco más de trabajo para configurar entornos virtuales. Otras distribuciones (Anaconda, en particular) proporcionan más automatización en la configuración del espacio de trabajo.

Limitaciones de CPython

CPython no tiene las optimizaciones de rendimiento que se encuentran en otras ediciones de Python. No hay compilador JIT nativo (justo a tiempo), bibliotecas matemáticas aceleradas ni adiciones de terceros por el bien del rendimiento. Esas son todas las cosas que puede agregar por su cuenta, pero no están agrupadas. Nuevamente, todo esto es por diseño, para asegurar la máxima compatibilidad y permitir que CPython sirva como una implementación de referencia, pero significa que cualquier optimización de rendimiento depende del desarrollador.

Además, CPython proporciona solo un conjunto básico de herramientas para trabajar con Python. El administrador de paquetes pip, por ejemplo, obtiene e instala paquetes del repositorio de paquetes PyPI nativo de Python. Pip incluso instalará binarios precompilados (a través del formato de distribución de rueda) si los proporciona el desarrollador, pero no instalará ninguna dependencia que los paquetes puedan tener fuera de PyPI. 

Vídeo relacionado: Cómo Python facilita la programación

Python, perfecto para TI, simplifica muchos tipos de trabajo, desde la automatización de sistemas hasta el trabajo en campos de vanguardia como el aprendizaje automático.

Pitón anaconda

Anaconda, producido por Anaconda, Inc. (anteriormente Continuum Analytics), está diseñado para desarrolladores de Python que necesitan una distribución respaldada por un proveedor comercial y con planes de soporte para empresas. Los principales casos de uso de Anaconda Python son matemáticas, estadísticas, ingeniería, análisis de datos, aprendizaje automático y aplicaciones relacionadas.

Casos de uso de Anaconda Python

Anaconda agrupa muchas de las bibliotecas más comunes utilizadas en el trabajo comercial y científico de Python (SciPy, NumPy, Numba, etc.) y hace que muchas más de ellas sean accesibles a través de un sistema de gestión de paquetes personalizado.

Anaconda se destaca de otras distribuciones en cómo integra todas estas piezas. Cuando se instala, Anaconda proporciona una aplicación de escritorio, Anaconda Navigator, que hace que todos los aspectos del entorno de Anaconda estén disponibles a través de una GUI conveniente. Encontrar componentes, mantenerlos actualizados y trabajar con ellos es mucho más fácil con Anaconda que con CPython.

Otra ventaja es la forma en que Anaconda maneja los componentes externos al ecosistema de Python si son necesarios para un paquete específico. El condaadministrador de paquetes, creado específicamente para Anaconda, se encarga de instalar tanto los paquetes de Python como los requisitos de software externo de terceros.

Limitaciones de Anaconda Python

Debido a que Anaconda incluye tantas bibliotecas útiles y puede instalar aún más con solo unas pocas teclas, el tamaño de una instalación de Anaconda puede ser mucho mayor que CPython. Una instalación básica de CPython se ejecuta alrededor de 100 MB; Las instalaciones de Anaconda pueden crecer hasta gigabytes de tamaño. Esto puede ser un problema en situaciones en las que tiene limitaciones de recursos.

Una forma de reducir la huella de Anaconda es instalar Miniconda, una versión simplificada de Anaconda que incluye solo el mínimo absoluto de piezas necesarias para comenzar a funcionar. Luego, puede agregar paquetes a Miniconda como mejor le parezca, teniendo en cuenta la cantidad de espacio que consume cada pieza.

ActivePython

Al igual que Anaconda, ActivePython es creado y mantenido por una empresa con fines de lucro, en este caso, ActiveState, que comercializa varios tiempos de ejecución de idiomas junto con el IDE de Komodo en varios idiomas.

Casos de uso de ActivePython

ActivePython está dirigido a usuarios empresariales y científicos de datos: personas que desean usar Python, pero que no quieren gastar mucho esfuerzo en ensamblar y administrar una instalación de Python. ActivePython utiliza el pipadministrador de paquetes habitual de Python , pero también proporciona algunos cientos de bibliotecas comunes como paquetes verificados, junto con algunas bibliotecas comunes con dependencias de terceros, como Intel Math Kernel Library.

Limitaciones de ActivePython

Existe un posible inconveniente en el enfoque de ActivePython para manejar paquetes con dependencias externas. Si desea actualizar a una versión más nueva de un proyecto con dependencias complejas (por ejemplo, TensorFlow), también deberá actualizar su instalación de ActivePython. En entornos donde el desarrollo tiende a estar ligado a una versión específica de un proyecto, esto es un problema menor. Pero en entornos donde el desarrollo tiende a rastrear versiones de vanguardia, podría presentar un problema.

PyPy

Como reemplazo directo del intérprete de CPython, PyPy utiliza la compilación Just-In-Time (JIT) para acelerar la ejecución de los programas de Python. Dependiendo de la tarea que se esté realizando, las ganancias de rendimiento pueden ser dramáticas. 

Casos de uso de PyPy

Una queja común sobre Python en general, y CPython en particular, es la velocidad. Por defecto, Python se ejecuta muchas veces más lento que C, a veces cientos de veces más lento. PyPy JIT compila el código Python en lenguaje de máquina, proporcionando una aceleración de 7,7 veces más que CPython en promedio. Algunas tareas se ejecutan hasta 50 veces más rápido. 

La mejor parte es que se requiere poco o ningún esfuerzo por parte del desarrollador para desbloquear estas ganancias. Cambie CPython por PyPy y, en su mayor parte, habrá terminado.

Limitaciones de PyPy

PyPy siempre ha funcionado mejor con aplicaciones Python "puras". A los paquetes de Python que interactúan con las bibliotecas de C, como NumPy, no les ha ido tan bien debido a la forma en que PyPy ha emulado las interfaces binarias nativas de CPython. Sin embargo, con el tiempo, los desarrolladores de PyPy han ido reduciendo este problema y han hecho que PyPy sea mucho más compatible con la mayoría de los paquetes de Python que dependen de las extensiones C. En resumen, el soporte para las extensiones de C todavía es limitado, pero mucho menos de lo que solía ser.

Otro posible inconveniente de PyPy es el tamaño del tiempo de ejecución. El tiempo de ejecución principal de CPython en Windows, excluyendo la biblioteca estándar, es de alrededor de 4 MB, mientras que el tiempo de ejecución de PyPy es de alrededor de 32 MB. Tenga en cuenta también que PyPy ha enfatizado durante mucho tiempo la rama 2.x de Python, por lo que, por ejemplo, PyPy para Python 3.x está actualmente disponible para Windows solo en una versión de prueba beta de 32 bits. (PyPy está disponible en versiones de 64 bits para Python 2.xy 3.x para Linux y MacOS).

Jython

La JVM (Java Virtual Machine) sirve como tiempo de ejecución para muchos lenguajes además de Java. La larga lista incluye Groovy, Scala, Clojure, Kotlin y, sí, Python, a través del proyecto Jython.

Casos de uso de Jython

Jython compila el código Python 2.x en el código de bytes de la JVM y ejecuta el programa resultante en la JVM. En algunos casos, un programa compilado con Jython se ejecutará más rápido que su contraparte CPython, pero no siempre.

La mayor ventaja que ofrece Jython es la interoperabilidad directa con el resto del ecosistema Java. Java se usa incluso más ampliamente que Python. La ejecución de Python en la JVM permite a los desarrolladores de Python aprovechar un enorme ecosistema de bibliotecas y marcos que de otro modo no podrían usar. De la misma manera, Jython permite a los desarrolladores de Java utilizar bibliotecas de Python. 

Limitaciones de Jython

El mayor inconveniente de Jython es que solo admite la rama 2.x de Python. El soporte para Python 3.x está en desarrollo, pero lo ha estado durante algún tiempo. Hasta ahora no se ha publicado nada.

Tenga en cuenta también que, si bien Jython lleva Python a la JVM, no lleva Python a Android. Como actualmente no hay una adaptación de Jython a Android propiamente dicha, Jython no se puede utilizar para desarrollar aplicaciones de Android.

IronPython

Así como Jython es una implementación de Python en la JVM, IronPython es una implementación de Python en el tiempo de ejecución .Net o CLR (Common Language Runtime). IronPython utiliza DLR (Dynamic Language Runtime) de CLR para permitir que los programas de Python se ejecuten con el mismo grado de dinamismo que en CPython.

Casos de uso de IronPython

Como Jython, IronPython es un puente. El gran caso de uso es la interoperabilidad entre Python y el universo .Net. Los ensamblados .Net existentes se pueden cargar en programas IronPython utilizando la sintaxis nativa de importación y manipulación de objetos de Python. También es posible compilar código IronPython en un ensamblado y ejecutarlo tal cual o invocarlo desde otros lenguajes. Sin embargo, tenga en cuenta que no se puede acceder directamente al MSIL (Microsoft Intermediate Language) en el ensamblado desde otros idiomas .Net, ya que no es compatible con Common Language Specification.

Limitaciones de IronPython

Al igual que Jython, IronPython actualmente solo admite Python 2.x. Sin embargo, se está trabajando para crear una implementación de IronPython 3.x.

WinPython

Como su nombre lo indica, WinPython es una distribución de Python creada específicamente para usuarios de Microsoft Windows. Las ediciones anteriores de CPython para Windows no estaban bien diseñadas y era difícil para los usuarios de Windows aprovechar al máximo el ecosistema de Python. La edición de Windows de CPython ha mejorado con el tiempo, pero WinPython todavía ofrece muchas cosas que no se encuentran en CPython.

Casos de uso de WinPython

La principal atracción de WinPython es que es una edición autónoma de Python. No es necesario que esté instalado en la máquina donde se ejecuta; solo necesita descomprimirse en un directorio. Esto hace que WinPython sea útil en casos donde el software no se puede instalar en un sistema dado, en escenarios donde un tiempo de ejecución de Python preconfigurado necesita ser distribuido junto con las aplicaciones que se ejecutan en él, o donde varias ediciones de Python deben ejecutarse en paralelo. sin interferir entre sí.

WinPython también incluye una gran cantidad de paquetes orientados a la ciencia de datos (NumPy, Pandas, SciPy, Matplotlib, etc.) para que puedan usarse de inmediato, sin pasos de instalación adicionales. También se incluye un compilador C / C ++, ya que muchas máquinas Windows no tienen uno incluido, y muchas extensiones de Python lo requieren o pueden usarlo.

Limitaciones de WinPython

Una limitación de WinPython es que puede incluir demasiado de forma predeterminada para algunos casos de uso. Para remediar eso, los creadores de WinPython proporcionan una versión "cero" de cada edición de WinPython, que contiene solo la instalación más mínima posible del producto. Se pueden agregar más paquetes más adelante, ya sea con la propia pipherramienta de Python o con la utilidad WPPM de WinPython.

Python Portable

Python Portable es el tiempo de ejecución de CPython en un paquete autónomo. Es cortesía de la colección PortableDevApps de aplicaciones igualmente independientes.

Casos de uso de Python Portable

Al igual que WinPython, Python Portable incluye una gran cantidad de paquetes para la informática científica: Matplotlib, Numba, SymPy, SciPy, Cython y otros. También como WinPython, Python Portable se ejecuta sin necesidad de estar instalado formalmente en el host de Windows; puede vivir en cualquier directorio o en una unidad extraíble. También se incluye el IDE de Spyder y el administrador de paquetes pip de Python, para que pueda agregar, cambiar o eliminar paquetes según sea necesario.

Limitaciones de Python Portable

A diferencia de WinPython, Python Portable no incluye un compilador C / C ++. Deberá proporcionar un compilador de C para hacer uso del código escrito con Cython (y, por lo tanto, compilado en C).

Distribuciones experimentales de Python

Estas distribuciones realizan cambios significativos en Python, ya sea porque usan Python como punto de partida para algo completamente nuevo o porque están realizando cambios estratégicos en Python estándar. En general, estos Pythons aún no se recomiendan para uso en producción. 

Si vive con una base de código Python 2.x en el futuro previsible, es posible que desee consultar nuestro artículo sobre las distribuciones experimentales de Python que mantienen vivo Python 2.x.

MicroPython

MicroPython proporciona un subconjunto mínimo del lenguaje Python que puede ejecutarse en hardware de muy bajo nivel, como microcontroladores. MicroPython implementa Python 3.4 con algunas diferencias. Es fácil escribir código MicroPython si conoce Python, pero es posible que el código existente no se ejecute tal cual.

Pycopy