MulaiMulai sekarang secara gratis

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

Lihat Kursus

Latihan interaktif praktis

Ubah teori menjadi tindakan dengan salah satu latihan interaktif kami.

Mulai berolahraga