ComenzarEmpieza gratis

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

Ver curso

Ejercicio interactivo práctico

Convierte la teoría en acción con uno de nuestros ejercicios interactivos

Empieza a hacer ejercicio