Utilizar %lprun: detectar cuellos de botella
Perfilar una función te permite profundizar en el código fuente de la función y detectar potencialmente cuellos de botella. Cuando veas que determinadas líneas de código ocupan la mayor parte del tiempo de ejecución de la función, es un indicio de que tal vez quieras implantar una técnica diferente y más eficiente.
Profundicemos en la función convert_units()
.
def convert_units(heroes, heights, weights):
new_hts = [ht * 0.39370 for ht in heights]
new_wts = [wt * 2.20462 for wt in weights]
hero_data = {}
for i,hero in enumerate(heroes):
hero_data[hero] = (new_hts[i], new_wts[i])
return hero_data
Carga el paquete line_profiler
en tu sesión IPython. A continuación, utiliza %lprun
para perfilar la función convert_units()
que actúa sobre los datos de tus superhéroes. Recuerda utilizar la sintaxis especial para trabajar con %lprun
(tendrás que proporcionar una bandera -f
especificando la función que deseas perfilar).
Se han cargado en tu sesión la función convert_units()
, la lista heroes
, el arreglo hts
y el arreglo wts
. Cuando hayas terminado de codificar, responde a la siguiente pregunta:
¿Qué porcentaje de tiempo se dedica a la línea de código de comprensión de la lista new_hts
en relación con el tiempo total dedicado a la función convert_units()
?
Este ejercicio forma parte del curso
Escribir código Python eficiente
Ejercicio interactivo práctico
Convierte la teoría en acción con uno de nuestros ejercicios interactivos
