Un método de análisis de ejemplo del impacto de las excepciones de Python en el rendimiento de ejecución del código
Las capacidades de manejo de excepciones de Python son muy poderosas, pero un uso inadecuado también puede tener consecuencias negativas. También me gusta usar excepciones al escribir programas. Aunque es mejor codificar de forma defensiva, dejarlo en manos del manejo de excepciones puede tener un efecto perezoso. De vez en cuando me pregunto cuánto afecta el manejo de excepciones al rendimiento, así que intenté probarlo hoy.
Excepciones de Python (Guía de estilo de código abierto de Google)
Consejo:
Se permiten excepciones, pero se debe tener cuidado.
Definición:
Las excepciones son una forma de romper el flujo de control normal de un bloque de código para manejar errores u otras condiciones inusuales.
Ventajas:
El flujo de control del código de operación normal no se mezcla con el código de manejo de errores. También permite que el flujo de control omita varios fotogramas cuando se produce una determinada condición. Por ejemplo, salte de n funciones anidadas en un solo paso sin continuar ejecutando el código incorrecto.
Desventajas:
Esto puede generar un flujo de control confuso. Es fácil pasar por alto situaciones de error al llamar a bibliotecas.
Conclusión:
La excepción debe cumplir ciertas condiciones:
Activa la excepción de esta manera: lanza MyException (mensaje de error) o lanza MyException. No utilice el formulario de excepción de dos argumentos (arroja MyException, mensaje de error) o de cadena caducada (arroja mensaje de error).
Un módulo o paquete debe definir su propia clase base de excepción específica del dominio, que debe heredar de la clase de excepción incorporada. La clase base de excepción del módulo debe llamarse "Error".
1
2
Clase
Error (Excepción):
Aprobado
Nunca use una declaración except: para detectar todas las excepciones, ni detectar Exception o StandardError, a menos que planee reactivar la excepción, o ya esté en el nivel más externo del hilo actual (recuerde imprimir un mensaje de error). Python es muy indulgente con las excepciones, excepto que realmente detecta cualquier error, incluidos los errores de sintaxis de Python. Es fácil ocultar errores reales usando excepto:.
Intenta reducir la cantidad de código en los bloques try/except. Cuanto mayor sea el bloque de prueba, más fácil será desencadenar excepciones inesperadas. En este caso, el bloque try/except ocultará el error real.
Utilice la cláusula finalmente para ejecutar el código que debe ejecutarse independientemente de si hay una excepción en el bloque try. Esto suele resultar útil para limpiar recursos, como cerrar archivos.
Al detectar excepciones, utilice como en lugar de comas. Por ejemplo
1234
Intenta
Subir
Error
Excepto...
Un error es un error:
Aprobar
Modo de experimento de diseño
Tome como ejemplo un experimento controlado relativamente simple e intuitivo.
Primero, defina un decorador para calcular el tiempo necesario para que se ejecute cada función:
12345678910
Excelente
Dispositivo de sincronización (función ):
Importación
Tiempo
Excelente
Embalaje (*
Parámetros,
*
*
kwargs):
Hora de inicio
time.time()