magic ipython ipython-notebook timeit

magic - ipython shell



¿Puedes capturar la salida de los métodos mágicos de ipython?(cronométralo) (2)

PD: esto está en un cuaderno ipython si eso hace una diferencia.

No, no lo hace.

En dev hay te %%capture la magia celular. La otra forma sería modificar la magia de timeit para devolver el valor en lugar de imprimir, o usar el módulo de timeit. Parches bienvenidos.

Quiero capturar y trazar los resultados de 5 o timeit llamadas de tiempo con tamaños de N logarítmicamente crecientes para mostrar cómo el methodX() escala con la entrada.

Hasta ahora he intentado:

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

No funciona...

Tampoco se puede encontrar información en los documentos. Siento que deberías poder al menos interceptar la cadena que se imprime. Después de eso puedo analizarlo para extraer mi información.

¿Alguien ha hecho esto o lo ha intentado?

PD: esto está en un cuaderno ipython si eso hace una diferencia.


Esta pregunta duplicada Captura el resultado de una función mágica de IPython tiene una answer que demuestra que esto ya se ha implementado.

Llamando a %timeit magic con la opción -o como:

%timeit -o <statement>

devuelve un objeto TimeitResult que es un objeto simple con toda la información sobre el %timeit ejecuta como atributos. Por ejemplo:

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