Entradas

Mostrando entradas de junio, 2010

Para aprender hay que equivocarse...

El único hombre que no se equivoca es el que nunca hace nada. Johann Wolfgang Goethe

Gestión de ficheros de configuración de aplicaciones, en Python

Imagen
Hola. En este post vamos a ver cómo gestionar ficheros de configuración de aplicaciones. Un fichero profile , también llamado fichero de perfil , fichero de configuración ó de inicialización es un archivo de texto plano, normalmente con extensión .INI (aunque no es indispensable), consistente en una serie de etiquetas de sección , las cuales se encierran entre corchetes ([]), y claves , las cuales son seguidas por un signo igual (=) y un valor . Cambiando los valores asignados a las claves se puede especificar una configuración personalizada ( custom ) para cada instalación de una aplicación. Cuando se quiere crear un fichero de configuración, se tiene que seleccionar el nombre de la sección y clave y determinar los valores que se usarán para dicha clave. Por ejemplo, un fichero profile podría contener información sobre un usuario de una aplicación. En el siguiente ejemplo, la información de un usuario es el nombre de la sección y los otros valores son las claves . [INFO_USUARIO

Calcular tiempos de ejecución, en Python

Imagen
Hola. Una forma rápida y sencilla de evaluar un algoritmo es calcular el tiempo de ejecución del mismo, para ver si efectivamente es óptimo para nuestros intereses. Este tipo de análisis puede hacerse matemáticamente, ó si disponemos de algún "proceso" que nos indique la rapidez del mismo. No voy a entrar aquí sobre como calcular tiempos de ejecución O, Omega y demás cosas de estas. En este post vamos a ver la forma de calcular el tiempo de ejecución, en segundos, para cualquier algoritmo. Para nuestro ejemplo, mediremos el algoritmo de ordenación QuickSort . Lo que vamos a crear es, mediante una función decoradora , una función para calcular tiempos de ejecución. Nuestra función de medición es la siguiente: def cronometro(funcion): def funcion_a_ejecutar(*argumentos): # Tiempo de inicio de ejecución. inicio = time.time() # Lanzamos función a ejecutar. ret = funcion(*argumentos) # Tiempo de fin de ejecución. fin = time.time()