Herramientas de usuario

Herramientas del sitio


clase:iabd:pia:1eval:tema02

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
clase:iabd:pia:1eval:tema02 [2023/11/16 11:54]
admin [Estructuras de datos]
clase:iabd:pia:1eval:tema02 [2025/03/12 14:36] (actual)
admin [Medición de rendimiento]
Línea 392: Línea 392:
  
 for key in a.keys(): for key in a.keys():
-    print(key)+    print(key,a[key])
 </sxh> </sxh>
  
 <sxh base> <sxh base>
-nombre +nombre Juan 
-edad+edad 37 
 +</sxh> 
 + 
 +  * Recorrer obteniendo clave y valor 
 +<sxh python> 
 +for key, value in a.items(): 
 +    print(key,value)
 </sxh> </sxh>
  
Línea 649: Línea 655:
 </sxh> </sxh>
 ===== Medición de rendimiento ===== ===== Medición de rendimiento =====
 +Para medir el tiempo que ha tardado algo se usa el método ''perf_counter''.
  
-=== timeit === +<sxh python> 
-IPython es como la forma genérica de los Jupyter Notebooks. Y tiene una serie de órdenes que podemos usar directamente. La orden ''%timeit'' permite saber el tiempo que ha tardado una orden en ejecutarse. +from time import monotonic
  
 +t = monotonic()
 +resultado=sum(range(10000000))
 +t=monotonic()-t
  
-<sxh python> +print(resultado
-time = %timeit -n1 -r1 -o sum(range(10000000)+print(round(t,2),"seg")
-</sxh> +
-Lo que hace es calcula el tiempo de ejecutar la orden ''sum(range(1000000000))'' y almacena cuanto ha tardado en ''time'' +
- +
-Y para imprimirlo, se usa: +
-<sxh python> +
-print(round(time.average,2),"seg")+
 </sxh> </sxh>
  
 <sxh base> <sxh base>
 +49999995000000
 0.21 seg 0.21 seg
 </sxh> </sxh>
  
-Sin embargo el problema de usar ''%timeit'' es que lo que ejecutas no puede devolver un resultado. Es decir que no podríamos saber el resultado de la suma.+El resultado se muestra en segundos
  
-=== perf_counter === +<note tip> 
-Para solucionar el problema anterior podemos simplemente medir nosotros el tiempo que tarda un método en ejecutarse con la función ''perf_counter''.+El problema de ''perf_counter()'' es que cuenta el tiempo en el que el ordenador está suspendido mientras que ''monotonic()'' no lo haceY tampoco cuenta el tiempo que el proceso está suspendido. 
 +</note>
  
-<sxh python> +Mas información: 
-from time import perf_counter+  * [[https://luminousmen.com/post/how-to-not-leap-in-time-using-python/|How to not leap in time using Python]] 
 +  * [[https://morton-kuo.medium.com/ml09-e549b2c26c47|ML09: Measuring Running Time in Python & R]]
  
-perf_counter() +===== Poetry ===== 
-resultado=sum(range(10000000)) +A veces no quieremos usar conda sino tener una carpeta con todo lo que necesita el proyecto, al estilo de //NodeJS//. En ese caso podemos usar una herramienta llamada [[https://python-poetry.org/|Poetry]] 
-t=perf_counter()-t+ 
 +  * Instalar poetry 
 +<sxh bash> 
 +pip install --user poetry
  
-print(resultado) 
-print(round(t,2),"seg") 
 </sxh> </sxh>
 +
 +
 +  * Comprobar que tenemos poetry instalado
 +
 +<sxh bash>
 +poetry --version
 +
 +</sxh>
 +
 +  * Para decir que las librerías se instalen en nuestra propia carpeta del proyecto.
 +<sxh bash>
 +poetry config virtualenvs.in-project true
 +
 +</sxh>
 +
 +  * Para tener un proyecto con python y todas sus dependencias en la misma carpeta haremos lo siguiente:
 +<sxh bash>
 +poetry init
 +poetry add libclang = "<12.0.0" numpy pandas matplotlib seaborn scikit-learn tensorflow tabulate PyMySQL SQLAlchemy ipympl keras-tuner tensorflow-addons statsmodels
 +poetry install
 +</sxh>
 +
 +<note important>
 +Si al hacer el ''poetry add'' se produce el error:
 +''[org.freedesktop.DBus.Error.UnknownObject] ("No such object path '/org/freedesktop/secrets/aliases/default'",)'' 
 +deberemos crear la siguiente variable de entorno:
 +''export PYTHON_KEYRING_BACKEND=keyring.backends.null.Keyring''
 +</note>
 +
 +Para ejecutar el código hay 2 formas:
 +
 +  * Desde la línea de comandos:
 +<sxh python>
 +poetry run python my_script.py
 +</sxh>
 +
 +  * Desde VS Code seleccionar en los entornos de ejecución la carpeta ''.venv'' del propio proyecto:
 +{{ :clase:iabd:pia:1eval:vs-code-poetry.png?direct |}}
 +
 +  * Si queremos usar el entorno de poetry pero no está en nuestra carpeta se puede indicar a VS Code cual es el ejecutable de python que debe usar siempre para ello hay que crear en la carpeta de nuestro proyecto el fichero ''$HOME/.config/Code/User/settings.json''
  
 <sxh base> <sxh base>
-49999995000000 +{     
-0.21 seg+    "python.defaultInterpreterPath": "/home/logongas/python_default_env/.venv/bin/python", 
 +}
 </sxh> </sxh>
  
-El resultado se muestra en segundos 
  
-Mas información: 
-  * [[https://morton-kuo.medium.com/ml09-e549b2c26c47|ML09: Measuring Running Time in Python & R]] 
  
 ===== Ejercicios ===== ===== Ejercicios =====
clase/iabd/pia/1eval/tema02.1700132063.txt.gz · Última modificación: 2023/11/16 11:54 por admin