Imagen:http://www.vizteams.com/blog/why-python-as-programming-language-past-present-future/
Python es un lenguaje tan genial, porque se puede hacer mucho con él en tan poco tiempo con tan poco código. No sólo eso, es compatible con múltiples tareas, como multiprocesamiento, con facilidad.
Detractores Python afirman aveces que Python es lento. Pero no tiene por qué ser así: Pruebe estos seis consejos para acelerar sus aplicaciones Python.
-
Confíe en un paquete externo de código crítico
Python hace que muchas tareas de programación sean fáciles, pero no siempre se puede proporcionar el mejor rendimiento en las tareas de tiempo crítico. El uso de un C, C ++ o lenguaje de máquina con paquete externo para tareas de tiempo crítico puede mejorar el rendimiento de la aplicación. Estos paquetes son específicos de la plataforma, lo que significa que usted necesita el paquete adecuado para la plataforma que está utilizando. En resumen, esta solución da un poco de portabilidad de aplicaciones a cambio de rendimiento que se puede obtener solamente programando directamente al host subyacente. Aquí hay algunos paquetes que usted debe considerar añadir a su arsenal de ejecución:
- Cython
- PyInlne
- PyPy
- Pyrex
Los paquetes actúan de diferentes maneras. Por ejemplo, Pyrex hace posible extender Python para hacer cosas como tipos de datos Utilice C para realizar tareas de memoria más eficiente o sencilla. PyInline le permite utilizar código C directamente en su aplicación Python. El código en línea se compila por separado, pero que mantiene todo en un solo lugar, haciendo uso de las eficiencias que C puede proporcionar.
-
Utilice las teclas para los deportes
Hay un montón de códigos muy antiguos de clasificación Python por ahí que le costará tiempo en la creación de una especie de encargo y velocidad en realidad llevar a cabo el tipo en tiempo de ejecución. La mejor manera de ordenar los elementos es el uso de llaves y el método de clasificación predeterminado () siempre que sea posible. Por ejemplo, considere el siguiente código:
En cada caso, la lista está ordenada de acuerdo al índice seleccionado como parte del argumento clave. Este enfoque funciona igual de bien con cuerdas como lo hace con los números.
Vea también: Python para principiantes
-
Optimización de bucles
Cada lenguaje de programación hace hincapié en la necesidad de optimizar los bucles. Al trabajar con Python, usted puede confiar en una gran cantidad de técnicas para hacer bucles y correr más rápido. Sin embargo, un método de desarrolladores es que a menudo pierden es evitar el uso de puntos dentro de un bucle. Por ejemplo, considere el siguiente código:
Cada vez que realice una llamada a str.upper, Python evalúa el método. Sin embargo, si coloca la evaluación en una variable, el valor se conoce ya y Python puede realizar tareas más rápido. El punto es reducir la cantidad de trabajo que lleva a cabo dentro de Python en bucles porque la naturaleza interpretada de Python puede realmente reducir la velocidad en esos casos.
(Nota: Hay muchas maneras de optimizar bucles; éste es sólo uno de ellos, por ejemplo, muchos programadores dirían que lista por comprensión es la mejor manera de lograr beneficios de velocidad en bucles La clave es que la optimización de los bucles es uno de los mejores.. manera de lograr una mayor velocidad de aplicación.)
-
Utilice una versión más reciente
Cualquier persona que busca información de Python en línea encontrará un sinnúmero de mensajes preguntando por pasar de una versión de Python a otro. En general, todas las versiones de Python incluyen optimizaciones que lo hacen más rápido que la versión anterior. El factor limitante es si sus bibliotecas favoritas también han hecho el cambio a la versión más reciente de Python. En lugar de preguntarse si se debe hacer el movimiento, la pregunta clave es determinar cuándo una nueva versión cuenta con el apoyo suficiente para hacer un movimiento viable.
Tiene que comprobar que el código todavía funciona. Es necesario utilizar las nuevas bibliotecas que obtuvo para usar con la nueva versión de Python y luego revisar su solicitud de romper cambios. Sólo después de realizar las correcciones necesarias va a notar la diferencia.
Sin embargo, si usted acaba de asegurarse de que si se ejecuta la aplicación con la nueva versión, se puede perder la oportunidad de las nuevas características que se encuentran en la actualización. Una vez que usted hace el movimiento, el perfil de su solicitud en virtud de la nueva versión, la verificación de las áreas problemáticas, y luego actualizar esas áreas para utilizar una nueva versión cuenta con la primera. Los usuarios verán una ganancia de rendimiento mayor al principio del proceso de actualización.
-
Trate de tener múltiples enfoques de codificación
Utilizando precisamente el mismo enfoque de codificación cada vez que se crea una aplicación casi seguro que resultará en algunas situaciones en las que la aplicación se ejecuta más lento de lo que podría hacerlo. Pruebe un poco de experimentación, como parte del proceso de perfilado. Por ejemplo, cuando la gestión de elementos en un diccionario, se puede tomar el enfoque seguro de determinar si ya existe el elemento y actualizarlo o puede añadir el artículo y directamente luego manejar la situación en la que el elemento no existe como una excepción. Considere este primer ejemplo de codificación:
Este código generalmente corre más rápido cuando myDict está vacía para empezar. Sin embargo, cuando myDict se llena generalmente (o al menos en su mayoría lleno) con datos, un enfoque alternativo funciona mejor.
La salida de {‘d’: 4, ‘c’: 4, ‘b’: 4, ‘a’: 4} es el mismo en ambos casos. La única diferencia es cómo se obtiene la salida. Pensar fuera de la caja y la creación de nuevas técnicas de codificación puede ayudar a obtener resultados más rápidos con sus aplicaciones.
-
Compile su aplicación
Algunos desarrolladores veces se olvidan de que las computadoras en realidad no hablan ninguno de los lenguajes que se utilizan para crear aplicaciones modernas. Las computadoras hablan con un código máquina. Con el fin de ejecutar la aplicación, se utiliza una aplicación para convertir el código legible por el hombre utiliza en algo la computadora pueda entender. Hay momentos en que la escritura de una aplicación en un solo lenguaje, como Python, y ejecutarlo en otro idioma, como C ++, tiene sentido desde una perspectiva de rendimiento. Depende de lo que desea que la aplicación debe hacer y los recursos que el sistema host puede proporcionar.
Una interesante compilador cruzado, Nuitka, convierte el código Python en código C ++. El resultado es que se puede ejecutar la aplicación en modo nativo en lugar de depender de un intérprete. Dependiendo de la plataforma y de la tarea, se podía ver un aumento de rendimiento significativo.
(Nota: Nuitka se encuentra actualmente en fase beta, por lo que debe usarlo con cuidado en aplicaciones de producción De hecho, se utiliza mejor para la experimentación en este momento Hay también una cierta discusión sobre si la compilación cruzada es la mejor manera de lograr un mejor rendimiento Desarrolladores… han utilizado compilación cruzada durante años para lograr objetivos específicos, tales como una mejor velocidad de la aplicación. Sólo recuerde que toda solución viene con compensaciones y usted debe considerar antes de usar la solución en un entorno de producción.)
Cuando se trabaja con un compilador cruzado, asegúrese de que es compatible con la versión de Python que trabaja. Nuitka soporta Python 2.6, 2.7, 3.2 y 3.3. Para hacer este trabajo la solución, necesita tanto un intérprete de Python y un compilador de C ++. Nuitka apoya una serie de compiladores de C ++, incluyendo Microsoft Visual Studio, MinGW y Clang / LLVM.
La compilación cruzada puede traer algunos inconvenientes graves. Por ejemplo, cuando se trabaja con Nuitka, usted encuentra que incluso un pequeño programa puede consumir espacio de disco importante porque Nuitka implementa la funcionalidad de Python usando una serie de bibliotecas de vínculos dinámicos (DLL). Así que esta solución puede no funcionar bien si usted está tratando con un sistema con recursos limitados.
Cada uno de los seis consejos de este artículo puede ayudarle a crear aplicaciones de Python más rápidas. Pero no hay balas de plata. Ninguno de los consejos trabajará en todo momento. Algunos funcionan mejor que otros con versiones específicas de Python, incluso la plataforma pueden hacer una diferencia. Usted necesita un perfil de su aplicación para determinar donde trabaja lentamente y luego tratar los consejos que aparecen a la mejor dirección de esas cuestiones.