Chciałbym otrzymać czas spędzony na wykonaniu komórki oprócz oryginalnego wyniku z komórki.
W tym celu próbowałem, %%timeit -r1 -n1
ale nie ujawnia to zmiennej zdefiniowanej w komórce.
%%time
działa dla komórki, która zawiera tylko 1 instrukcję.
In[1]: %%time
1
CPU times: user 4 µs, sys: 0 ns, total: 4 µs
Wall time: 5.96 µs
Out[1]: 1
In[2]: %%time
# Notice there is no out result in this case.
x = 1
x
CPU times: user 3 µs, sys: 0 ns, total: 3 µs
Wall time: 5.96 µs
Jak najlepiej to zrobić?
Aktualizacja
Używam czasu wykonania w Nbextension już od jakiegoś czasu. To jest wspaniałe.
python
ipython
ipython-notebook
jupyter
colinfang
źródło
źródło
x
linii wyświetlania w następnej komórce?Odpowiedzi:
Użyj magii komórek i tego projektu na github autorstwa Phillip Cloud:
Załaduj go, umieszczając go na górze notebooka lub umieść w pliku konfiguracyjnym, jeśli zawsze chcesz go ładować domyślnie:
Po załadowaniu każde wyjście kolejnego wykonania komórki będzie zawierało czas w minutach i sekundach potrzebny do jego wykonania.
źródło
pip install ipython-autotime
%%time
działa nawet wtedy, gdy ostatnia instrukcja nie jestprint
.Jedynym sposobem rozwiązania tego problemu jest wykonanie ostatniej instrukcji za pomocą polecenia print.
Nie zapominaj, że magia komórek zaczyna się od,
%%
a magia linii zaczyna się od%
.Zwróć uwagę, że wszelkie zmiany wprowadzone w komórce nie są brane pod uwagę w następnych komórkach, co jest sprzeczne z intuicją, gdy istnieje potok:
źródło
%%time
aa=1
druga komórka nie wie, coa
to jest?%time
a%timeit
teraz jest częścią wbudowanych magicznych poleceń ipythonźródło
Łatwiejszym sposobem jest użycie wtyczki ExecuteTime w pakiecie jupyter_contrib_nbextensions.
źródło
Po prostu dodałem
%%time
na początku komórki i uzyskałem czas. Możesz użyć tego samego w klastrze / środowisku wirtualnym Jupyter Spark przy użyciu tego samego. Po prostu dodaj%%time
na górze komórki, a otrzymasz wynik. Na klastrze iskier za pomocą Jupytera dodałem do górnej części ogniwa i otrzymałem wyjście jak poniżej: -źródło
źródło
Możesz do tego użyć
timeit
magicznej funkcji.Albo w celi
Sprawdź więcej magicznych funkcji IPython na https://nbviewer.jupyter.org/github/ipython/ipython/blob/1.x/examples/notebooks/Cell%20Magics.ipynb
źródło
To nie jest do końca piękne, ale bez dodatkowego oprogramowania
Następnie możesz uruchomić to tak:
źródło
Czasami formatowanie jest inne w komórce podczas używania
print(res)
, ale jupyter / ipython zawiera rozszerzeniedisplay
. Zobacz przykład różnicy w formatowaniu przy użyciu pand poniżej.Plik
display
Oświadczenie może zachować formatowanie.źródło
możesz również zajrzeć do magicznego polecenia profilowania w Pythonie,
%prun
które daje coś w rodzaju -następnie
wróci
Uważam to za przydatne podczas pracy z dużymi fragmentami kodu.
źródło
Kiedy masz kłopoty, co to znaczy:
?%timeit
lub??timeit
Aby uzyskać szczegółowe informacje:
źródło
Jeśli chcesz wydrukować czas wykonania komórki ściennej, jest to sztuczka, użyj
ale tutaj upewnij się, że %% czas jest funkcją magiczną, więc umieść go w pierwszym wierszu kodu .
jeśli umieścisz go po jakimś wierszu kodu, spowoduje to błąd użytkowania i nie zadziała.
źródło