Опираясь на ответы Стефана и Антониммо, я положил
def Tictoc():
start_stack = []
start_named = {}
def tic(name=None):
if name is None:
start_stack.append(time())
else:
start_named[name] = time()
def toc(name=None):
if name is None:
start = start_stack.pop()
else:
start = start_named.pop(name)
elapsed = time() - start
return elapsed
return tic, toc
в модуль utils.py
и использую его с
from utils import Tictoc
tic, toc = Tictoc()
Таким образом
- Вы можете просто использовать
tic()
, toc()
и вкладывать их, как в Matlab - , альтернативно, вы можете назвать их:
tic(1)
, toc(1)
или tic('very-important-block')
, toc('very-important-block')
и таймеры с разными именами не будут мешать - их импорт таким образом предотвращает помехи между модулями, использующими его.
(здесь toc не печатает истекшее время, а возвращает его.)