У меня есть много классов. Некоторые из них медленно инициализируются, и я хочу отложить некоторые из инициализации, используя cached properties. Первый шаг - определить, кто является виновником. Поэтому я хочу, чтобы время на следующий код:Идеи инициализации класса времени
class MyClass:
def __init__(self, ....):
# start measurement
...
# end measurement, report
Мои требования: результаты
- синхронизации как записей.
- лишь навязчивые, как это возможно
- Я хочу, чтобы держать его в своем коде, но быть в состоянии отключить его с флагом
Так что моя первая идея заключается в том, чтобы реализовать общую timeme
функции:
def timeme(func):
def f(*args, **kwargs):
start = # get start timestamp
result = func(*args, **kwargs)
end = # get end timestamp
# report timespan
return result
return f
(который может быть использован для времени какой-либо функции, а не только методы класса)
И теперь я могу сделать:
class MyClass:
@timeme
def __init__(self, ....):
...
Есть ли еще pythonic Способ сделать это? Некоторая стандартная поддержка библиотеки для этого? Поддержка инструментов? Какие-либо очевидные недостатки такого подхода?
Отдельного слово приходит на ум: // профилирование //. – MrGumble
Конечно, но я хочу сосредоточиться на конкретных областях. Мне не нужен полный и сложный отчет профайлера. И имея этот код, я могу включить его в производство, если захочу, имея его в журналах с реальной деятельностью - не путем воспроизведения прецедента с профилировщиком. – dangonfast