Usando %mprun: Herói BMI
Você gostaria de calcular o índice de massa corporal (BMI) para uma amostra selecionada de heróis. BMI 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_profiler
em sua sessão do IPython. - Importe
calc_bmi_lists
debmi_lists
. - Depois que você concluir as etapas acima, use
%mprun
para criar o perfil da funçãocalc_bmi_lists()
que atua nos dados dos super-heróis. A matrizhts
e a matrizwts
já 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
