Menggunakan %lprun: perbaiki bottleneck
Pada latihan sebelumnya, Anda memprofilkan fungsi convert_units() dan melihat bahwa pemahaman daftar new_hts bisa menjadi bottleneck potensial. Apakah Anda memperhatikan bahwa pemahaman daftar new_wts juga menyumbang persentase waktu eksekusi yang serupa? Ini menunjukkan bahwa Anda mungkin ingin membuat objek new_hts dan new_wts dengan teknik yang berbeda.
Karena tinggi dan berat setiap pahlawan disimpan dalam array numpy, Anda dapat menggunakan penyiaran array (array broadcasting) alih-alih pemahaman daftar untuk mengonversi tinggi dan berat. Hal ini telah diterapkan dalam fungsi berikut:
def convert_units_broadcast(heroes, heights, weights):
# Array broadcasting instead of list comprehension
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
Muat paket line_profiler ke sesi IPython Anda. Lalu, gunakan %lprun untuk memprofilkan fungsi convert_units_broadcast() pada data para superhero Anda. Fungsi convert_units_broadcast(), daftar heroes, serta array hts dan wts telah dimuat ke sesi Anda. Setelah selesai menulis kode, jawab pertanyaan berikut:
Berapa persentase waktu yang dihabiskan pada baris kode penyiaran array new_hts relatif terhadap total waktu yang dihabiskan di dalam fungsi convert_units_broadcast()?
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