Simple way to measure cell execution time in ipython notebook

匿名 (未验证) 提交于 2019-12-03 02:04:01

问题:

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


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!