Использование %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
Практическое интерактивное упражнение
Превратите теорию в практику с помощью одного из наших интерактивных упражнений
Начать упражнение