НачатьНачать бесплатно

Использование %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

Посмотреть курс

Практическое интерактивное упражнение

Превратите теорию в практику с помощью одного из наших интерактивных упражнений

Начать упражнение