Jak znaleźć czas wykonania wykonany przez każdą linię Kodeksu Pythona.

Line_profiler współpracuje z IPythonem, ale nie działa z notebookiem Jupsytera. Próbowałem dodać @profile do mojej funkcji, daje błąd mówiący o nazwie "Profil" nie jest zdefiniowany. Istnieje jeden sposób na zrobienie tego przez czas

def prof_function():
    x=10*20
    y=10+x
    return (y)
20
Aseem 24 czerwiec 2017, 11:01

4 odpowiedzi

Najlepsza odpowiedź

Możesz użyć line_profiler w notatniku Jupsytera.

  1. Zainstaluj: pip install line_profiler
  2. W notebooku Jupsytera zadzwoń: %load_ext line_profiler
  3. Zdefiniuj swoją funkcję prof_function jak w przykładzie.
  4. Wreszcie profil w następujący sposób: %lprun -f prof_function prof_function()

Który zapewni produkcję:

Timer unit: 1e-06 s

Total time: 3e-06 s
File: <ipython-input-22-41854af628da>
Function: prof_function at line 1

Line #      Hits         Time  Per Hit   % Time  Line Contents
==============================================================
     1                                           def prof_function():
     2         1          1.0      1.0     33.3      x=10*20
     3         1          1.0      1.0     33.3      y=10+x
     4         1          1.0      1.0     33.3      return (y)
20
S.A. 13 kwiecień 2018, 19:39

Tylko podsumowanie odpowiedzi @ s.a.

!pip install line_profiler
%load_ext line_profiler

def func():
    print('hi')

%lprun -f func func()
2
Thomas G. 13 maj 2020, 08:34

Zainstaluj Profiler

conda install line_profiler

Więcej informacji na temat http://mortada.net/easily-profile-Python -Code-in-jupsyter.html

2
Luis 24 czerwiec 2017, 12:46

Aby uzyskać czas realizacji dla każdej linii i uzyskać ładny kolorowy ciepła ciepła, używam tej ładnej magii ipython ... : //Github.com/csurfer/pyHeatmagic .

enter image description here

Instalacja:

PIP Zainstaluj Py-Heat-Magic

Aby profilować każdą linię w notebooku:

  • Zduplikuj swój notatnik.
  • Scal wszystkie komórki (podświetl wszystkie i Shift-M)
  • Utwórz nową komórkę na górze
  • wchodzić

%load_ext heat

W górnej części drugiej komórki wprowadź to w linii pierwszej:

%%heat  

Możesz mieć problemy, jeśli masz więcej niż 2000 linii kodu.

11
DougR 22 wrzesień 2018, 23:46