MulaiMulai sekarang secara gratis

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_profiler ke dalam sesi IPython Anda.
  • Impor calc_bmi_arrays dari bmi_arrays.
  • Setelah Anda menyelesaikan langkah-langkah di atas, gunakan %mprun untuk memprofil fungsi calc_bmi_arrays() pada data pahlawan super Anda. Array sample_indices, array hts, dan array wts telah 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

Lihat Kursus

Latihan interaktif praktis

Ubah teori menjadi tindakan dengan salah satu latihan interaktif kami.

Mulai berolahraga