Використання %lprun: знайдіть «вузькі місця»
Профілювання функції дає змогу заглибитися в її вихідний код і виявити потенційні «вузькі місця». Якщо окремі рядки коду забирають більшість часу виконання функції, це сигнал, що варто застосувати інший, ефективніший підхід.
Заглибмося у функцію convert_units().
def convert_units(heroes, heights, weights):
new_hts = [ht * 0.39370 for ht in heights]
new_wts = [wt * 2.20462 for wt in weights]
hero_data = {}
for i,hero in enumerate(heroes):
hero_data[hero] = (new_hts[i], new_wts[i])
return hero_data
Завантажте пакет line_profiler у вашу сесію IPython. Потім скористайтеся %lprun, щоб профілювати функцію convert_units() на даних про супергероїв. Пам'ятайте про спеціальний синтаксис роботи з %lprun (потрібно додати прапорець -f, щоб указати функцію для профілювання).
Функцію convert_units(), список heroes, масив hts і масив wts уже завантажено у вашу сесію. Після того як завершите написання коду, дайте відповідь на запитання нижче:
Який відсоток часу припадає на рядок зі списковим включенням new_hts відносно загального часу виконання функції convert_units()?
Ця вправа є частиною курсу
Ефективне написання коду Python
Практична інтерактивна вправа
Перетворіть теорію на практику за допомогою однієї з наших інтерактивних вправ
Почати вправу