bloco de tempo de código em Python sem colocá-lo em uma function

Eu gostaria de tempo um bloco de código sem colocá-lo em uma function separada. por exemplo:

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)) 

no entanto, eu gostaria de fazer isso com o módulo timeit de uma maneira mais limpa, mas não quero fazer uma function separada para o bloco de código.

obrigado.

Você pode fazer isso com a instrução with . Por exemplo:

 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 usado assim:

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

Você pode configurar uma variável para se referir ao bloco de código que você deseja colocar colocando esse bloco dentro das aspas triplas do Python. Em seguida, use essa variável ao instanciar seu object timeit. Seguindo um exemplo dos documentos timeit do Python , eu desenvolvi o seguinte:

 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 mim imprimiu:

499500

0,000341892242432

(Onde 499500 é a saída do bloco cronometrado e 0.000341892242432 é o tempo que passa.)

De acordo com a resposta da Skilldrick, existe um módulo bobo que eu acho que pode ajudar: 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) 
Intereting Posts