stmt - timeit python
¿Qué es% timeit en python? (5)
Esto se conoce como una
línea mágica
en iPython.
Son únicos porque sus argumentos solo se extienden hasta el final de la línea actual, y las magias en sí mismas están realmente estructuradas para el desarrollo de la línea de comandos.
timeit
se usa para
timeit
la ejecución del código.
Si quisieras ver todas las magias que puedes usar, simplemente puedes escribir:
%lsmagic
para obtener una lista de las líneas mágicas y las células mágicas.
Alguna información mágica adicional de la documentación here :
IPython tiene un sistema de comandos que llamamos magics que proporcionan efectivamente un mini lenguaje de comandos que es ortogonal a la sintaxis de Python y que el usuario puede ampliar con nuevos comandos. Las magias deben escribirse de forma interactiva, por lo que utilizan convenciones de línea de comandos, como el uso de espacios en blanco para separar argumentos, guiones de opciones y otras convenciones típicas de un entorno de línea de comandos.
Dependiendo de si está en modo de
línea
o
celda
, hay dos formas diferentes de usar
%timeit
.
Su pregunta ilustra la primera forma:
In [1]: %timeit range(100)
vs.
In [1]: %%timeit
: x = range(100)
:
Siempre leo el código para calcular el tiempo de esta manera:
%timeit function()
¿Puedes explicar qué significa "%" aquí?
Creo que el "%" siempre se usa para reemplazar algo en una cadena, como% s significa reemplazar una cadena,% d reemplazar un dato, pero no tengo idea de este caso.
IPython los intercepta, se llaman comandos mágicos integrados, aquí está la lista: https://ipython.org/ipython-doc/dev/interactive/magics.html
También puede crear sus propias magias personalizadas, https://ipython.org/ipython-doc/dev/config/custommagics.html
Su
timeit
está aquí
https://ipython.org/ipython-doc/dev/interactive/magics.html#magic-timeit
Solo me gustaría agregar otra ventaja útil de usar% timeit para answer por mu 無 que:
- También puede utilizar las variables actuales de la consola sin pasar el fragmento de código completo como en el caso de timeit.timeit para construir la variable que se construye en otro entorno en el que funciona.
PD: Sé que este debería ser un comentario para responder arriba, pero actualmente no tengo suficiente reputación para eso, espero que lo que escriba sea útil para alguien y me ayude a ganar suficiente reputación para comentar la próxima vez.
%timeit
es una función
mágica de ipython
, que se puede usar para
cronometrar
un fragmento de código en particular (una sola declaración de ejecución o un único método).
De los documentos:
%cronométralo
Time execution of a Python statement or expression Usage, in line mode: %timeit [-n<N> -r<R> [-t|-c] -q -p<P> -o] statement
Para usarlo, por ejemplo, si queremos saber si usar
xrange
es más rápido que usar
range
, simplemente puede hacer:
In [1]: %timeit for _ in range(1000): True
10000 loops, best of 3: 37.8 µs per loop
In [2]: %timeit for _ in xrange(1000): True
10000 loops, best of 3: 29.6 µs per loop
Y obtendrás los horarios para ellos.
La principal ventaja de
%timeit
son:
-
que no tiene que importar
timeit.timeit
y ejecutar el código varias veces para determinar cuál es el mejor enfoque. -
% timeit calculará automáticamente la cantidad de ejecuciones necesarias para su código en función de un total de 2 segundos de ventana de ejecución.
-
También puede utilizar las variables actuales de la consola sin pasar el fragmento de código completo, como en el caso de
timeit.timeit
para construir la variable que se construye en otro entorno en el que timeit funciona.
Las magias de línea tienen como prefijo el carácter % y funcionan de manera muy similar a las llamadas de línea de comandos del sistema operativo: obtienen como argumento el resto de la línea, donde los argumentos se pasan sin paréntesis ni comillas. Las magias de las celdas están prefijadas con un doble %% , y son funciones que obtienen como argumento no solo el resto de la línea, sino también las líneas debajo de ella en un argumento separado.