Menggunakan %mprun: Hero BMI 2.0
Mari kita lihat apakah menggunakan pendekatan berbeda untuk menghitung BMI dapat menghemat memori. Jika Anda ingat, tinggi dan berat setiap hero disimpan dalam array numpy. Artinya, Anda dapat menggunakan kemampuan pengindeksan array dan broadcasting yang praktis dari NumPy untuk melakukan perhitungan. Sebuah fungsi bernama calc_bmi_arrays telah dibuat dan disimpan ke dalam berkas berjudul bmi_arrays.py. Untuk kemudahan, fungsinya ditampilkan di bawah ini:
def calc_bmi_arrays(sample_indices, hts, wts):
# Gather sample heights and weights as arrays
s_hts = hts[sample_indices]
s_wts = wts[sample_indices]
# Convert heights from cm to m and square with broadcasting
s_hts_m_sqr = (s_hts / 100) ** 2
# Calculate BMIs as an array using broadcasting
bmis = s_wts / s_hts_m_sqr
return bmis
Perhatikan bahwa fungsi ini melakukan semua perhitungan yang diperlukan menggunakan array.
Mari kita lihat apakah pendekatan array yang diperbarui ini dapat mengurangi jejak memori Anda:
- Muat paket
memory_profilerke dalam sesi IPython Anda. - Impor
calc_bmi_arraysdaribmi_arrays. - Setelah Anda menyelesaikan langkah-langkah di atas, gunakan
%mprununtuk memprofil fungsicalc_bmi_arrays()pada data pahlawan super Anda. Arraysample_indices, arrayhts, dan arraywtstelah dimuat ke dalam sesi Anda.
Setelah Anda selesai menulis kode, jawab pertanyaan berikut:
Berapa banyak memori yang dikonsumsi oleh baris-baris kode pengindeksan array dan broadcasting dalam fungsi calc_bmi_array()? (yaitu, berapa jumlah total kolom Increment untuk keempat baris kode ini?)
Latihan ini adalah bagian dari kursus
Menulis Kode Python yang Efisien
Latihan interaktif praktis
Ubah teori menjadi tindakan dengan salah satu latihan interaktif kami.
Mulai berolahraga