Red de conocimiento informático - Material del sitio web - Cómo mejorar la eficiencia operativa de Python

Cómo mejorar la eficiencia operativa de Python

Consejo 1: utilice paquetes de funciones externas para el código clave

Python simplifica muchas tareas de programación, pero para algunas tareas urgentes, su rendimiento suele ser insatisfactorio. El uso de paquetes de funciones externas en C/C o lenguaje de máquina para manejar tareas urgentes puede mejorar efectivamente la eficiencia operativa de la aplicación. Estos paquetes de funciones suelen depender de plataformas específicas, por lo que debe elegir el paquete de funciones adecuado según la plataforma que esté utilizando. En resumen, este truco requiere que sacrifiques la portabilidad de la aplicación por la eficiencia operativa que solo se puede obtener programando directamente en el host subyacente. Aquí hay algunos paquetes que puede elegir para mejorar la eficiencia:

Cython

Pylnlne

PyPy

Pyrex

Estos paquetes de funciones tienen diferentes propósitos. Por ejemplo, el uso de tipos de datos en lenguaje C puede hacer que las tareas que involucran operaciones de memoria sean más eficientes o intuitivas. Pyrex puede ayudar a Python a ampliar dicha funcionalidad. Pylnline le permite utilizar código C directamente en aplicaciones Python. El código en línea se compila de forma independiente, pero mantiene todos los archivos compilados en algún lugar y puede aprovechar al máximo la alta eficiencia que proporciona el lenguaje C.

Consejo 2: use claves al ordenar

Python contiene muchas reglas de clasificación antiguas que pueden llevar mucho tiempo cuando crea métodos de clasificación personalizados que se ejecutan. También retrasará la ejecución real velocidad del programa. La mejor manera de ordenar es utilizar tantas claves como sea posible y el método integrado sort(). Por ejemplo, tome el siguiente código:

operador de importación

somelist = [(1, 5,?, (6, 2, 4), (9, 7, 5) ]

alguna lista.sort(key=operator.itemgetter(0))

alguna lista

#Salida = [(1, 5,?, (6, 2) , 4), (9, 7, 5)]

alguna lista.sort(key=operator.itemgetter(1))

alguna lista

#Salida = [(6, 2, 4), (1, 5,?, (9, 7, 5)]

somelist.sort(key=operator.itemgetter(2))

alguna lista

#Salida = [(6, 2, 4), (9, 7, 5), (1, 5,?]

En cada ejemplo, la lista es ordenados según el índice que elija como parámetro clave. Este método no solo es válido para tipos numéricos, sino que también se aplica a tipos de cadenas

Consejo 3: Optimización para bucles

. Cada lenguaje de programación enfatiza las soluciones de bucle óptimas. Cuando se usa Python, se pueden utilizar una gran cantidad de técnicas para hacer que los programas de bucle se ejecuten más rápido. Sin embargo, un truco que los desarrolladores a menudo olvidan es: intentar evitarlo. .

Por ejemplo, tome el siguiente código:

lowerlist = ['this', 'is', 'lowercase']

upper = str.upper

lowerlist = []

append = listasuperior.append

para palabra en la lista inferior:

append(superior(palabra))

imprimir ( Upperlist)

#Output = ['THIS', 'IS', 'LOWERCASE']

Cada vez que llames a str.upper, Python calculará el valor de esta fórmula. Sin embargo, si asigna esta evaluación a una variable, el resultado de la evaluación se conocerá de antemano y el programa Python podrá ejecutarse más rápido. Por lo tanto, la clave es minimizar la cantidad de trabajo que realiza Python en el bucle. Debido a las características de la ejecución interpretada de Python, se ralentizará considerablemente en el ejemplo anterior.

(Nota: Hay muchas formas de optimizar los bucles, y esta es solo una de ellas. Por ejemplo, muchos programadores pensarán que la comprensión de listas es la mejor manera de mejorar la velocidad del bucle. La clave es optimizar el esquema de bucle es una buena opción para acelerar su aplicación)

Consejo 4: use una versión más nueva de Python

Si busca Python en Internet, encontrará innumerables información. todo sobre cómo actualizar su versión de Python. Normalmente, cada versión de Python contiene optimizaciones que hacen que se ejecute más rápido que la versión anterior. Sin embargo, el factor limitante es si sus bibliotecas favoritas están actualizadas para admitir nuevas versiones de Python. En lugar de debatir si la biblioteca debe actualizarse, el punto clave es si la nueva versión de Python es lo suficientemente eficiente como para admitir esta actualización.

Debes asegurarte de que tu código aún pueda ejecutarse en la nueva versión. Debe utilizar la nueva biblioteca para experimentar la nueva versión de Python y luego debe verificar su aplicación al realizar cambios críticos. Sólo después de haber realizado las correcciones necesarias podrás apreciar la diferencia en la nueva versión.

Sin embargo, si solo te aseguras de que tu aplicación se ejecute en la nueva versión, es probable que te pierdas las nuevas características proporcionadas por la nueva versión. Una vez que decida actualizar, analice el rendimiento de su aplicación con la nueva versión y verifique posibles áreas problemáticas, y luego priorice la aplicación de las funciones de la nueva versión a esas áreas. Sólo así los usuarios podrán notar mejoras en el rendimiento de la aplicación desde el inicio de la actualización.

Consejo 5: Pruebe varios métodos de codificación

Usar el mismo método de codificación cada vez que crea una aplicación casi siempre conducirá a una eficiencia de ejecución insatisfactoria de la aplicación. Puede probar algunos métodos experimentales durante el análisis del programa. Por ejemplo, al procesar elementos de datos en un diccionario, puede utilizar un método seguro y asegurarse de que los elementos de datos ya existan antes de la actualización, o puede actualizar directamente los elementos de datos y tratar los elementos de datos no existentes por separado como casos especiales. Mire el primer fragmento de código a continuación:

n = 16

myDict = {}

for i in range(0, n):

char = 'abcd'[i4]

si char no está en myDict:

myDict[char] = 0

myDict[char] = 1

print(myDict)

Cuando myDict está vacío al principio, este código se ejecutará más rápido. Sin embargo, a menudo myDict está lleno de datos, al menos la mayor parte, y otro método sería más eficiente.

n = 16

myDict = {}

para i en el rango(0, n):

char = 'abcd' [i4]

prueba:

myDict[char] = 1

excepto KeyError:

myDict[char] = 1 p>

print(myDict)

Los resultados de salida son los mismos en ambos métodos. La diferencia radica en cómo se obtiene el resultado. Pensar de forma innovadora y crear nuevas técnicas de programación puede hacer que sus aplicaciones sean más eficientes.

Consejo 6: compila tu aplicación de forma cruzada

Los desarrolladores a veces olvidan que las computadoras en realidad no entienden los lenguajes de programación utilizados para crear aplicaciones modernas. Las computadoras entienden el lenguaje de máquina. Para ejecutar su aplicación, utiliza una aplicación para convertir el código legible por humanos que escribe en código legible por máquina. A veces tiene sentido desde una perspectiva de tiempo de ejecución escribir su aplicación en un lenguaje como Python y luego ejecutar su aplicación en un lenguaje como C. La clave está en lo que desea que logre su aplicación y qué recursos puede proporcionar su sistema host.

Nuitka es un interesante compilador cruzado que puede convertir tu código Python en código C. De esta forma, podrás ejecutar tus propias aplicaciones en modo nativo sin depender de un programa intérprete. Descubrirá que su aplicación se ejecuta de manera más eficiente, pero esto variará según la plataforma y la tarea.

(Nota: Nuitka aún se encuentra en la etapa de prueba, así que preste más atención en las aplicaciones prácticas. De hecho, es mejor usarlo para experimentos en este momento. Además, con respecto a si la compilación cruzada puede mejorar la eficiencia operativa El mejor enfoque está abierto a debate. Los desarrolladores han estado utilizando la compilación cruzada durante años para mejorar la velocidad de sus aplicaciones. Recuerde, cada solución tiene ventajas y desventajas, así que sopese cuidadosamente antes de usarla en producción. entorno. )

Cuando utilice un compilador cruzado, recuerde asegurarse 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 muchos compiladores de C, incluidos Microsoft Visual Studio, MinGW y Clang/LLVM.

La compilación cruzada puede causar algunos problemas graves. Por ejemplo, cuando utilice Nuitka, encontrará que incluso un programa pequeño consume una gran cantidad de espacio en el controlador. Porque Nuitka utiliza una serie de bibliotecas de enlaces dinámicos (DDL) para realizar funciones de Python. Por lo tanto, si utiliza un sistema con recursos muy limitados, es posible que este enfoque no sea viable.