Usando %mprun: Herói IMC
Você gostaria de calcular o índice de massa corporal (IMC) para uma amostra selecionada de heróis. O IMC pode ser calculado usando a fórmula abaixo:

Uma amostra aleatória de 25.000 super-heróis foi carregada em sua sessão como uma matriz chamada sample_indices. Essa amostra é uma lista de índices que corresponde ao índice de cada super-herói selecionado na lista heroes.
Uma função chamada calc_bmi_lists também foi criada e salva em um arquivo intitulado bmi_lists.py. Para sua conveniência, ele é exibido abaixo:
def calc_bmi_lists(sample_indices, hts, wts):
# Gather sample heights and weights as lists
s_hts = [hts[i] for i in sample_indices]
s_wts = [wts[i] for i in sample_indices]
# Convert heights from cm to m and square with list comprehension
s_hts_m_sqr = [(ht / 100) ** 2 for ht in s_hts]
# Calculate BMIs as a list with list comprehension
bmis = [s_wts[i] / s_hts_m_sqr[i] for i in range(len(sample_indices))]
return bmis
Observe que essa função executa todos os cálculos necessários usando a compreensão de lista (daí o nome calc_bmi_lists()). Aprofunde-se nessa função e analise o espaço de memória para realizar seus cálculos usando listas:
- Carregue o pacote
memory_profilerem sua sessão do IPython. - Importe
calc_bmi_listsdebmi_lists. - Depois que você concluir as etapas acima, use
%mprunpara criar o perfil da funçãocalc_bmi_lists()que atua nos dados dos super-heróis. A matrizhtse a matrizwtsjá foram carregadas em sua sessão.
Depois que você terminar de codificar, responda à seguinte pergunta:
Quanta memória as linhas de código de compreensão da lista consomem na função calc_bmi_lists()? (Ou seja, qual é a soma total da coluna Increment para essas quatro linhas de código?)
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
Começar o exercício