временной блок кода в Python, не ставя его в функцию

Я хотел бы выделить блок кода, не вкладывая его в отдельную функцию. например:

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

однако я бы хотел сделать это с помощью модуля timeit более чистым способом, но я не хочу делать отдельную функцию для блока кода.

Благодарю.

3 Solutions collect form web for “временной блок кода в Python, не ставя его в функцию”

Вы можете сделать это с with инструкции with . Например:

 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) 

Чтобы использовать это:

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

Вы можете настроить переменную, чтобы ссылаться на блок кода, который вы хотите использовать, добавив этот блок в тройные кавычки Python. Затем используйте эту переменную при создании экземпляра объекта timeit. Несколько после примера из документов Python timeit , я придумал следующее:

 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) 

Что для меня напечатано:

499500

+0,000341892242432

(Где 499500 – это результат тайм-кода, а 0.000341892242432 – время работы.)

Согласно ответу Skilldrick, есть глупый модуль, который, я думаю, может помочь: 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) 
Python - лучший язык программирования в мире.