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

%lprun kullanımı: darboğazı düzelt

Önceki egzersizde convert_units() fonksiyonunu profillemiş ve new_hts liste üretecinin olası bir darboğaz olabileceğini görmüştün. new_wts liste üretecinin de çalışma süresinin benzer bir yüzdesini aldığını fark ettin mi? Bu, new_hts ve new_wts nesnelerini farklı bir teknikle oluşturmak isteyebileceğinin bir göstergesi.

Her kahramanın boyu ve kilosu bir numpy dizisinde tutulduğundan, boy ve kiloları dönüştürmek için liste üreteci yerine dizi yayınlamayı (array broadcasting) kullanabilirsin. Bu, aşağıdaki fonksiyonda uygulanmıştır:

def convert_units_broadcast(heroes, heights, weights):

    # Liste üreteci yerine dizi yayınlama
    new_hts = heights * 0.39370
    new_wts = weights * 2.20462

    hero_data = {}

    for i,hero in enumerate(heroes):
        hero_data[hero] = (new_hts[i], new_wts[i])

    return hero_data

line_profiler paketini IPython oturumuna yükle. Ardından, convert_units_broadcast() fonksiyonunu süper kahraman verilerin üzerinde çalışırken profillemek için %lprun kullan. convert_units_broadcast() fonksiyonu, heroes listesi, hts dizisi ve wts dizisi oturumuna yüklenmiş durumda. Kodlamayı bitirdikten sonra şu soruyu yanıtla:

Toplam sürenin ne kadarı convert_units_broadcast() fonksiyonunda, new_hts dizi yayınlama satırında harcanıyor?

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