bloque de tiempo de código en Python sin ponerlo en una función

Me gustaría cronometrar un bloque de código sin ponerlo en una función separada. por ejemplo:

def myfunc: # some code here t1 = time.time() # block of code to time here t2 = time.time() print "Code took %s seconds." %(str(t2-t1)) 

sin embargo, me gustaría hacer esto con el módulo timeit de una manera más limpia, pero no quiero hacer una función separada para el bloque de código.

Gracias.

Puedes hacer esto con la sentencia with . Por ejemplo:

 import time from contextlib import contextmanager @contextmanager def measureTime(title): t1 = time.clock() yield t2 = time.clock() print '%s: %0.2f seconds elapsed' % (title, t2-t1) 

Para ser utilizado de esta manera:

 def myFunc(): #... with measureTime('myFunc'): #block of code to time here #... 

Puede configurar una variable para referirse al bloque de código que desea cronometrar colocando ese bloque dentro de las comillas triples de Python. Luego use esa variable cuando cree una instancia de su objeto timeit. Algo siguiendo un ejemplo de los documentos de Python timeit , se me ocurrió lo siguiente:

 import timeit code_block = """\ total = 0 for cnt in range(0, 1000): total += cnt print total """ tmr = timeit.Timer(stmt=code_block) print tmr.timeit(number=1) 

Que para mi impreso:

499500

0.000341892242432

(Donde 499500 es la salida del bloque temporizado, y 0.000341892242432 es el tiempo en ejecución).

De acuerdo con la respuesta de Skilldrick, hay un módulo tonto que creo que puede ayudar: BlockLogginInator .

 import time from blocklogginginator import logblock # logblock is the alias with logblock(name='one second'): """" Our code block. """ time.sleep(1) 

 >>> Block "one second" started >>> Block "one second" ended (1.001)