31

I want to capture and plot the results from 5 or so timeit calls with logarithmically increasing sizes of N to show how methodX() scales with input.

So far I have tried:

output = %timeit -r 10 results = methodX(N) 

It does not work...

Can't find info in the docs either. I feel like you should be able to at least intercept the string that is printed. After that I can parse it to extract my info.

Has anyone done this or tried?

PS: this is in an ipython notebook if that makes a diff.

1

2 Answers 2

52

This duplicate question Capture the result of an IPython magic function has an answer demonstrating that this has since been implemented.

Calling the %timeit magic with the -o option like:

%timeit -o <statement> 

returns a TimeitResult object which is a simple object with all information about the %timeit run as attributes. For example:

In [1]: result = %timeit -o 1 + 2 Out[1]: 10000000 loops, best of 3: 23.2 ns per loop In [2]: result.best Out[2]: 2.3192405700683594e-08 
Sign up to request clarification or add additional context in comments.

4 Comments

This seems specific to only some magic commands (maybe just %timeit?). It does not work with %%timeit. Using result = %%timeit -o as the line of a cell returns None.
@StevenC.Howell You can use %%timeit -o without assignment. It will return a TimeitResult object and thanks to IPython's output capture you can retrieve the result by accessing _.
From the docs for timeit : "In cell mode (%%timeit) the statement in the first line is used as setup code (executed but not timed) and the body of the cell is timed. The cell body has access to any variables created in the setup code." github.com/ipython/ipython/blob/…
Additionally, if you add -q the you don't the normal output.
1

PS: this is in an ipython notebook if that makes a diff.

No it does not.

On dev there is te %%capture cell magic. The other way would be to modify the timeit magic to return value instead of printing, or use the timeit module itself. Patches welcomed.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.