Usando %lprun: identificar gargalos
A criação de perfil de uma função permite que você se aprofunde no código-fonte da função e identifique possíveis gargalos. Quando você vê determinadas linhas de código ocupando a maior parte do tempo de execução da função, isso é uma indicação de que você pode querer implementar uma técnica diferente e mais eficiente.
Vamos nos aprofundar na função 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
Carregue o pacote line_profiler
em sua sessão do IPython. Em seguida, use o site %lprun
para traçar o perfil da função convert_units()
que atua nos dados de seus super-heróis. Lembre-se de usar a sintaxe especial para trabalhar com %lprun
(você terá que fornecer um sinalizador -f
especificando a função que deseja criar um perfil).
A função convert_units()
, a lista heroes
, a matriz hts
e a matriz wts
foram carregadas em sua sessão. Depois que você terminar de codificar, responda à seguinte pergunta:
Que porcentagem de tempo você gasta na linha de código de compreensão da lista new_hts
em relação à quantidade total de tempo gasto na função convert_units()
?
Este exercício faz parte do curso
Como escrever um código Python eficiente
Exercício interativo prático
Transforme a teoria em ação com um de nossos exercícios interativos
