BaşlayınÜcretsiz Başlayın

%mprun kullanma: Kahraman BMI 2.0

BMİ'leri hesaplamak için farklı bir yaklaşım kullanmak bellekten tasarruf sağlayabilir mi, görelim. Hatırlarsan, her kahramanın boyu ve kilosu bir numpy dizisinde saklanıyor. Bu da hesaplamalarını yapmak için NumPy'nin kullanışlı dizi indeksleme yeteneklerini ve yayınlama (broadcasting) özelliğini kullanabileceğin anlamına gelir. calc_bmi_arrays adlı bir fonksiyon oluşturuldu ve bmi_arrays.py adlı bir dosyaya kaydedildi. Kolaylık olması için aşağıda gösteriliyor:

def calc_bmi_arrays(sample_indices, hts, wts):

    # Boy ve kiloları diziler olarak al
    s_hts = hts[sample_indices]
    s_wts = wts[sample_indices]

    # Boyları cm'den m'ye çevir ve yayınlama ile karesini al
    s_hts_m_sqr = (s_hts / 100) ** 2

    # BMI'leri yayınlama kullanarak bir dizi olarak hesapla
    bmis = s_wts / s_hts_m_sqr

    return bmis

Dikkat edersen bu fonksiyon gerekli tüm hesaplamaları diziler kullanarak yapıyor.

Güncellenen bu dizi yaklaşımı bellek kullanımını azaltıyor mu, görelim:

  • memory_profiler paketini IPython oturumuna yükle.
  • bmi_arrays içinden calc_bmi_arrays fonksiyonunu içe aktar.
  • Yukarıdaki adımları tamamladıktan sonra, %mprun kullanarak süper kahraman verilerinde çalışan calc_bmi_arrays() fonksiyonunu profile et. sample_indices dizisi, hts dizisi ve wts dizisi oturumuna yüklendi.

Kodlamayı bitirdikten sonra şu soruyu yanıtla:

calc_bmi_array() fonksiyonunda dizi indeksleme ve yayınlama yapan kod satırları ne kadar bellek tüketiyor? (yani bu dört kod satırı için Increment sütununun toplamı nedir?)

Bu egzersiz

Verimli Python Kodu Yazmak

kursunun bir parçasıdır
Kursu Görüntüle

Uygulamalı interaktif egzersiz

İnteraktif egzersizlerimizden biriyle teoriyi pratiğe dökün

Egzersizi başlat