Red de conocimiento informático - Conocimiento del nombre de dominio - ¿Cómo mejorar el rendimiento de la red de los programas Python?

¿Cómo mejorar el rendimiento de la red de los programas Python?

Python es un lenguaje interesante porque puedes hacer mucho con muy poco código en poco tiempo. No sólo eso, sino que puede admitir fácilmente múltiples tareas, como el multiprocesamiento. Los críticos de Python a veces dicen que Python se ejecuta lentamente. Este artículo intentará presentar 6 consejos para acelerar las aplicaciones Python.

1. Hacer que el código clave dependa de paquetes externos.

Aunque Python facilita muchas tareas de programación, es posible que no siempre proporcione el mejor rendimiento para tareas urgentes. Para tareas urgentes, puede utilizar paquetes externos escritos en C, C o lenguaje de máquina, que pueden mejorar el rendimiento de su aplicación. Estos paquetes no son multiplataforma, lo que significa que debe encontrar el paquete correcto según la plataforma que esté utilizando. En resumen, este enfoque renuncia a cierta portabilidad de las aplicaciones a cambio de un rendimiento del programa que sólo puede obtenerse programando directamente en un host específico. Aquí hay algunos paquetes que debería considerar agregar a su "arsenal de rendimiento":

Cython

PyPy

PyPy

Pylex Heat Resistente Duro Glass

Estos paquetes mejoran el rendimiento de diferentes maneras. Por ejemplo, Pyrex puede ampliar lo que Python puede hacer, como usar tipos de datos C para hacer que las tareas de memoria sean más eficientes o sencillas. PyInIne le permite utilizar código C directamente en aplicaciones Python. El código en línea del programa se compila por separado, pero aprovecha las eficiencias proporcionadas por el lenguaje C y mantiene todo el código en el mismo lugar.

2. Utilice esta tecla al ordenar.

Cuando crea una clasificación personalizada, hay muchos códigos de clasificación antiguos de Python que le quitarán tiempo, pero realmente aceleran el proceso de clasificación en tiempo de ejecución. La mejor manera de ordenar elementos es utilizar claves y el método de clasificación predeterminado sort() siempre que sea posible. Por ejemplo, considere el siguiente código:

import operatorsomelist =[(1, 5, 8), (6, 2, 4), (9, 7, 5)]somelist (clave = operador). . captador de elementos (0)) lista de elementos # Salida = [(1,5,8), (6,2,4), (9,7,5)] lista de elementos (clave = operador. captador de elementos (1)) alguna lista # Salida =[(6,2,4),(1,5,8),(9sort (clave = operator.item getter(2)) alguna lista # salida =[(6,2,4),(9 ,7, 5), (1, 5, 8)], en cada caso, según el índice que elija como parte del argumento clave. De manera similar a ordenar por números, este método también funciona para ordenar por cadenas

<. p>3. Optimizar bucles

Cada lenguaje de programación enfatiza la necesidad de optimizar los bucles. Cuando se usa Python, existen muchas técnicas en las que se puede confiar para hacer que los bucles se ejecuten más rápido. a menudo se pasa por alto es evitar el uso de operaciones de puntos en bucles. Por ejemplo, considere el siguiente código:

lowerlist = ['this ', ' is ', lowercase ']upper = str . Append = lista superior. Agregar palabra en la lista inferior: Append(upper(word))print(upper list)# salida =['this','is','lowercase'] método str se llama cada vez. utiliza el reemplazo de variables para obtener el valor, el valor se conoce y Python puede realizar la tarea más rápido.

La clave para optimizar un bucle es reducir la cantidad de trabajo que Python realiza dentro del bucle, ya que el intérprete nativo de Python realmente puede ralentizar la ejecución en esa situación.

(Nota: Hay muchas formas de optimizar los bucles, y esta es solo una de ellas. Por ejemplo, muchos programadores dirán que la derivación de listas es la mejor manera de mejorar la velocidad de ejecución en los bucles. La clave El punto aquí es que los bucles de optimización son una de las mejores formas para que los programas alcancen velocidades de ejecución más altas)

4. Utilice una versión más nueva de Python

Si busca información de Python en el Internet, encontrará que innumerables personas lo están haciendo. Pregunte sobre la migración de una versión de Python a otra. En términos generales, cada versión de Python contiene optimizaciones que hacen que se ejecute más rápido que la versión anterior. El factor limitante en la migración de versiones es si sus bibliotecas favoritas se han migrado a versiones más nuevas de Python. En lugar de preguntarse si se debe migrar una determinada versión, la pregunta clave es determinar cuándo una nueva versión tiene soporte suficiente para garantizar la viabilidad de la migración.

Debes verificar que tu código aún se esté ejecutando. Debe utilizar las nuevas bibliotecas que obtiene con la nueva versión de Python y luego verificar si su aplicación necesita cambios importantes. Notarás las diferencias entre las versiones sólo después de haber realizado los cambios necesarios. Sin embargo, si simplemente se asegura de que su aplicación pueda ejecutarse en la nueva versión sin realizar ningún cambio, es posible que se pierda las nuevas funciones que vienen con esas actualizaciones de versión. Después de completar la migración, debe escribir una descripción para la nueva versión de su aplicación, verificar si hay áreas problemáticas y priorizar la actualización de estas áreas con las características de la nueva versión. De esta manera, los usuarios verán mayores mejoras de rendimiento al principio del proceso de actualización.

5. Pruebe varios métodos de codificación

Si utiliza el mismo método de codificación cada vez que crea una aplicación, es casi seguro que su aplicación será más lenta de lo real. Como parte de su análisis, puede probar algunos experimentos. Por ejemplo, si administra algunos elementos en un diccionario, puede usar un método seguro para determinar si el elemento ya existe y actualizarlo, o puede agregar el elemento directamente y luego manejarlo como una excepción. Considere el primer ejemplo de codificación:

n = 16 myDictit = { } for I in range(0,n): char = 'ABCD'[I 4]if char no está en mi dict: my dict [char ]= 0 mydictit[char] = 1 print(mi dict) Este código suele estar en mi dict. Sin embargo, cuando mydict suele estar lleno de datos (o al menos en su mayoría), otro enfoque funciona mejor.

n = 16 mydictit = { } para I en el rango(0, n): char = 'ABCD'[I 4]intenta: mydictit[char] = 1 excepto error de clave: mydictit[char]= 1 print(mydictit La única diferencia es cómo obtener este resultado. Pensar fuera del modo fijo y crear nuevas técnicas de codificación puede ayudar a que su aplicación obtenga resultados más rápido.

6. Aplicaciones de compilación cruzada

Los desarrolladores a veces olvidan que las computadoras en realidad no conocen ningún lenguaje para crear aplicaciones modernas, pero lo que sí entienden es código de máquina. Para ejecutar una aplicación en una computadora, es necesario utilizar un código legible por humanos. se convierte en código que una computadora puede entender. A veces tiene sentido escribir una aplicación en un lenguaje (como Python) y ejecutarla en otro lenguaje (como C). Depende de lo que desee que haga la aplicación. y qué recursos puede proporcionar el sistema host.

Un interesante compilador cruzado, Nuitka, puede convertir su código Python en código C para que pueda ejecutar la aplicación en modo nativo en lugar de depender del intérprete. .

Dependiendo de la plataforma y la tarea, podrá ver importantes mejoras de rendimiento.

(Nota: Nuitka todavía está en versión beta, por lo que debes tener cuidado al usarlo para crear programas. De hecho, por el momento es mejor usarlo para experimentos. También hay cierta discusión sobre si el uso cruzado -La compilación es la mejor manera de obtener un mejor rendimiento. Desde hace varios años, los desarrolladores han estado utilizando la compilación cruzada para lograr objetivos específicos, como una mejor velocidad de la aplicación. Tenga en cuenta que cada solución tiene sus ventajas y desventajas antes de usarla. un entorno de producción. Se deben considerar estas ventajas y desventajas)

Cuando utilice un compilador cruzado, asegúrese de que sea compatible con la versión de Python que está utilizando. Nuitka es compatible con Python2.6, 2.7, 3.2 y 3.3. Para que esta solución funcione, necesita un intérprete de Python y un compilador de C. Nuitka admite múltiples compiladores de C, incluidos Microsoft Visual Studio, MinGW y Clang/LLVM.

La compilación cruzada también puede tener algunos efectos negativos graves. Por ejemplo, cuando utilice Nuitka, encontrará que incluso un programa pequeño consume mucho espacio en el disco duro porque Nuitka utiliza una gran cantidad de bibliotecas de enlaces dinámicos (dll) para implementar funciones de Python. Entonces, cuando te enfrentas a un sistema con recursos limitados, es posible que esta solución no funcione bien.

Resumen

Cualquiera de estos seis consejos puede ayudarte a crear programas Python más rápidos. Pero ninguna habilidad es única para todos, ni funciona siempre. Algunos trucos son más efectivos que otros en versiones específicas de Python; incluso la plataforma del sistema puede afectar su efectividad. Debe configurar su aplicación, determinar dónde se está desacelerando y luego probar algunas técnicas que parezcan resolver mejor esos problemas.