Я хочу использовать отличный line_profiler, но только некоторое время. Чтобы сделать это, я добавляюПрофилирование python с использованием line_profiler - умный способ удалить операторы @profile на лету?
@profile
перед каждым вызовом функции, например.
@profile
def myFunc(args):
blah
return
и выполнить
kernprof.py -l -v mycode.py args
Но я не хочу, чтобы поставить @profile
декораторов от руки каждый раз, потому что большую часть времени я хочу, чтобы выполнить код без них, и Я получаю исключение, если пытаюсь включить их, например
mycode.py args
Есть ли золотая середина, где я могу динамически иметь декоратор снятые на основе некоторого условия переключения/аргумента, без необходимости делать вещи вручную и/или изменять каждую функцию слишком много?
Я бы спросил, действительно ли мне нужно так часто профилироваться, что ему нужна такая поддержка. Я не говорю, что вы это делаете или не делаете, поэтому вам не нужно отвечать. Я просто нашел случай использования немного удивительным. – msw
Код занимает много времени (часы на данный момент ...) для выполнения, поэтому на данный момент я хочу убить двух зайцев одним выстрелом для получения результатов и профилирования одновременно. Я полагаю, что профилирование я рассматриваю как непрерывный процесс (так как я новичок в этом/взволнован), поэтому я бы просто не использовал его в (многих) функциях, объявлял об этом и удалял все декораторы. – jtlz2
Я бы не позволял чему-то часами без [* пробовать это *] (http://stackoverflow.com/a/4299378/23771). Это ничего не стоит и говорит вам, что именно происходит. –