1. Uczyć się
  2. /
  3. Courses
  4. /
  5. Wydajny kod w Pythonie

Connected

Exercise

Używanie %lprun: wykrywanie wąskich gardeł

Profilowanie funkcji pozwala zagłębić się w jej kod źródłowy i znaleźć potencjalne wąskie gardła. Jeśli widzisz, że określone linie kodu pochłaniają większość czasu wykonania funkcji, to sygnał, że warto rozważyć inne, wydajniejsze podejście.

Przyjrzyjmy się bliżej funkcji 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

Załaduj pakiet line_profiler do swojej sesji IPython. Następnie użyj %lprun, aby sprofilować funkcję convert_units() działającą na danych o superbohaterach. Pamiętaj o specjalnej składni wymaganej przez %lprun – konieczne będzie podanie flagi -f wskazującej funkcję, którą chcesz sprofilować.

Funkcja convert_units(), lista heroes, tablica hts oraz tablica wts są już załadowane do twojej sesji. Po zakończeniu pracy z kodem odpowiedz na poniższe pytanie:

Jaki procent czasu jest poświęcany na wyrażenie listowe new_hts w stosunku do całkowitego czasu wykonania funkcji convert_units()?

Instrukcje

50 XP

Możliwe odpowiedzi