可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I would like to get the time spent on the cell execution in addition to the original output from cell.
To this end, I tried %%timeit -r1 -n1
but it doesn't expose the variable defined within cell.
%%time
works for cell which only contains 1 statement.
What's the best way to do it?
Update
I have been using Execute Time in Nbextension for quite some time now. It is great.
回答1:
Use cell magic and this project on github by Phillip Cloud:
Load it by putting this at the top of your notebook or put it in your config file if you always want to load it by default:
%install_ext https://raw.github.com/cpcloud/ipython-autotime/master/autotime.py %load_ext autotime
If loaded, every output of subsequent cell execution will include the time in min and sec it took to execute it.
回答2:
The only way I found to overcome this problem is by executing the last statement with print.
Do not forget that cell magic starts with %%
and line magic starts with %
.
%%time clf = tree.DecisionTreeRegressor().fit(X_train, y_train) res = clf.predict(X_test) print(res)
回答3:
%time
and %timeit
now come part of ipython's built-in magic commands
回答4:
Sometimes the formatting is different in a cell when using print(res)
, but jupyter/ipython comes with a display
. See an example of the formatting difference using pandas below.
%%time import pandas as pd from IPython.display import display df = pd.DataFrame({"col0":{"a":0,"b":0} ,"col1":{"a":1,"b":1} ,"col2":{"a":2,"b":2} }) #compare the following print(df) display(df)
The display
statement can preserve the formatting. 
回答5:
I simply added %%time
at the beginning of the cell and got the time. You may use the same on Jupyter Spark cluster/ Virtual environment using the same. Just add %%time
at the top of the cell and you will get the output. On spark cluster using Jupyter, I added to the top of the cell and I got output like below:-
[1] %%time import pandas as pd from pyspark.ml import Pipeline from pyspark.ml.classification import LogisticRegression import numpy as np .... code .... Output :- CPU times: user 59.8 s, sys: 4.97 s, total: 1min 4s Wall time: 1min 18s
回答6:
This is not exactly beautiful but without extra software
class timeit(): from datetime import datetime def __enter__(self): self.tic = self.datetime.now() def __exit__(self, *args, **kwargs): print('runtime: {}'.format(self.datetime.now() - self.tic))
Then you can run it like:
with timeit(): # your code, e.g., print(sum(range(int(1e7)))) % 49999995000000 % runtime: 0:00:00.338492