%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ırUygulamalı interaktif egzersiz
İnteraktif egzersizlerimizden biriyle teoriyi pratiğe dökün
Egzersizi başlat