Estoy programando en python en Windows y me gustaría medir con precisión el tiempo que tarda una función en ejecutarse. He escrito una función "time_it" que toma otra función, la ejecuta y devuelve el tiempo que tardó en ejecutarse.Temporización precisa de funciones en python
def time_it(f, *args):
start = time.clock()
f(*args)
return (time.clock() - start)*1000
llamo esto 1000 veces y promedió el resultado. (la constante 1000 al final es dar la respuesta en milisegundos.)
Esta función parece funcionar, pero tengo la sensación de que estoy haciendo algo mal, y que al hacerlo de esta manera estoy usando más tiempo que la función realmente utiliza cuando se está ejecutando.
¿Existe alguna forma más estándar o aceptada de hacerlo?
Cuando cambié mi función de prueba para llamar a una impresión de modo que demorara más, mi función time_it devuelve un promedio de 2.5 ms mientras que cProfile.run ('f()' devuelve una media de 7.0 ms. Pensé que mi función sobreestimaría el tiempo en todo caso, ¿qué está pasando aquí?
Una nota adicional, es el tiempo relativo de funciones comparadas entre sí que me importa, no el tiempo absoluto, ya que obviamente variará dependiendo del hardware y otros factores.
Ignorarme: esa cadena no es un nombre de función, es un bloque de código evaluado. Entonces puedes usarlo para un tiempo rápido. Esta es la respuesta correcta. Y en otras noticias, "no es" es significativamente más rápido que "! =" - pero puede tener otras implicaciones. –
Y en esa tangente - antes de usar "no es" para cualquier cosa inteligente - tenga esto en cuenta - http://stackoverflow.com/questions/1392433/python-why-is-hello-is-hello –