colinfang
Me gustaría obtener el tiempo dedicado a la ejecución de la celda además de la salida original de la celda.
Con este fin, probé %%timeit -r1 -n1
pero no expone la variable definida dentro de la celda.
%%time
funciona para celdas que solo contienen 1 declaración.
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
¿Cuál es la mejor manera de hacerlo?
Actualizar
he estado usando Tiempo de ejecución en Nbextension desde hace bastante tiempo. Eso es genial.
Actualización 2021-03
A partir de ahora, esta es la respuesta correcta. Esencialmente, %%time
y %%timeit
ambos funcionan ahora como cabría esperar.
Salvador Dalí
La única forma que encontré para superar este problema es ejecutando la última declaración con print.
No olvides eso la magia celular comienza con %%
y la magia de líneas comienza con %
.
%%time
clf = tree.DecisionTreeRegressor().fit(X_train, y_train)
res = clf.predict(X_test)
print(res)
Tenga en cuenta que los cambios realizados dentro de la celda no se tienen en cuenta en las siguientes celdas, algo que es contrario a la intuición cuando hay una canalización:
-
Ahora %%time funciona incluso cuando la última declaración no se imprime, como @rhaps0dy señaló anteriormente.
– nealmcb
17 de agosto de 2018 a las 1:18
-
display(res) también funciona y es la solución preferida cuando se intenta mostrar un marco de datos de pandas o cualquier otra cosa que requiera una salida estilizada.
– dshefman
31/10/2018 a las 15:53
-
@dshefman Sí, eso es correcto y también lo hace fácil de transportar para portátiles de databricks/spark.
– technazi
6 de noviembre de 2018 a las 4:55
-
¿No es un problema cuando implementamos la primera celda?
%%time
ya=1
pero la segunda celda no sabe quéa
¿es?– Jasón
27 de agosto de 2019 a las 19:25
-
para tu información Descubrí que las variables en la celda probada ahora se tienen en cuenta en las siguientes celdas. (20/02/2020) – Fei
–Fei Yao
20 de febrero de 2020 a las 18:27
Una forma más fácil es usar el complemento ExecuteTime en el paquete jupyter_contrib_nbextensions.
pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
jupyter nbextension enable execute_time/ExecuteTime
-
¡Esta es la respuesta más subestimada!
– DaveR
6 de julio de 2019 a las 9:38
-
para alguien que se sumerge en el mar de respuestas: este es el indicado, solo instálelo y luego verá el tiempo de ejecución en cada celda en un formato agradable
– El pocho la pantera
19 de febrero de 2020 a las 18:29
-
funcionó perfectamente! también se incluye la marca de tiempo cuando se ha ejecutado la celda
– Timo
29 de abril de 2021 a las 13:49
-
Y si pip no funciona, las opciones de instalación directa o conda se mencionan en github github.com/ipython-contrib/jupyter_contrib_nbextensions
– viento
29 de abril de 2021 a las 17:33
ryanmc
%time
y %timeit
ahora ven parte de la función integrada de ipython comandos mágicos
Usa la magia celular y este proyecto en github de Phillip Cloud:
Cárguelo colocando esto en la parte superior de su computadora portátil o colóquelo en su archivo de configuración si siempre desea cargarlo de manera predeterminada:
%install_ext https://raw.github.com/cpcloud/ipython-autotime/master/autotime.py
%load_ext autotime
Si se carga, cada salida de la ejecución de celda subsiguiente incluirá el tiempo en minutos y segundos que tomó ejecutarla.
import time
start = time.time()
"the code you want to test stays here"
end = time.time()
print(end - start)
-
Perfecto. Es demasiado complicado preservar el objeto de %%timeit y usarlo en la siguiente celda
– Pablo
9 de julio de 2020 a las 17:47
-
¿Cuáles son las unidades de este tiempo, segundos?
– Sachin Motwani
28 de julio a las 6:58
Eso era solo un problema en las versiones anteriores.
Todo lo que necesita hacer ahora es poner %%time
en la parte superior de la celda.
%%time
mide el tiempo que tardó algo en ejecutarse. Es mejor para generar informes sobre operaciones de ejecución prolongada que para realizar optimizaciones de bajo nivel.
%%timeit
es una herramienta de evaluación comparativa que ejecuta declaraciones una y otra vez para dar la promedio tiempo de ejecución para algunas declaraciones, así como la desviación estándar. Debido a la forma en que se ejecutan repetidamente las sentencias, las variables creadas en %%timeit
las celdas no están disponibles en otras celdas.
%%timeit
usa la pitón timeit
módulo. Los documentos para eso dicen,
Evita una serie de trampas comunes para medir los tiempos de ejecución. Véase también la introducción de Tim Peters al capítulo “Algoritmos” en el Libro de cocina de Pythonpublicado por O’Reilly.
yo esperar que ese módulo sigue siendo relevante, ya que la referencia a la que se refiere describe problemas como (1) soluciones alternativas para la actualización de Windows 98 solamente time.time()
18,2 veces por segundo, y (2) atascar todas las declaraciones en una línea para evitar la sobrecarga del código de bytes de incrementar el contador de número de línea.
La respuesta mejor calificada actualmente, así como algunas de las otras obsoletas, que deben eliminarse porque ahora están altamente engañoso—hacer tiene comentarios útiles que indican que esas respuestas no son correctas:
%%time
funciona incluso cuando la última declaración no esprint
- las variables en la celda probada ahora se tienen en cuenta en las siguientes celdas
-
Perfecto. Es demasiado complicado preservar el objeto de %%timeit y usarlo en la siguiente celda
– Pablo
9 de julio de 2020 a las 17:47
-
¿Cuáles son las unidades de este tiempo, segundos?
– Sachin Motwani
28 de julio a las 6:58
Puedes usar timeit
función mágica para eso.
%timeit CODE_LINE
O en el celular
%%timeit
SOME_CELL_CODE
Consulte más funciones mágicas de IPython en https://nbviewer.jupyter.org/github/ipython/ipython/blob/1.x/examples/notebooks/Cell%20Magics.ipynb
¿Realmente necesita cronometrar la visualización del valor? ¿Por qué no simplemente poner el
x
línea de visualización en la siguiente celda?– dicha
19 de febrero de 2016 a las 17:58
¿Por qué no aceptar una respuesta?
– raratiru
28/03/2017 a las 20:30