【发布时间】:2013-08-16 06:45:11
【问题描述】:
我想使用出色的line_profiler,但只是在某些时候。为了使它工作,我添加了
@profile
在每个函数调用之前,例如
@profile
def myFunc(args):
blah
return
并执行
kernprof.py -l -v mycode.py args
但我不想每次都手动放入 @profile 装饰器,因为大多数时候我想在没有它们的情况下执行代码,如果我尝试包含它们会出现异常,例如
mycode.py args
是否有一种快乐的媒介,我可以根据某些条件开关/参数动态删除装饰器,而无需手动执行操作和/或过多地修改每个函数?
【问题讨论】:
-
我会问自己,我是否真的需要如此频繁地进行分析,以至于它需要这样的支持。我不是说你做或不做,所以你不需要回答。我只是发现这个用例有点令人惊讶。
-
代码需要很长时间(目前是几个小时......)才能执行,所以现在我想用一块石头杀死两只鸟,同时获得结果和分析。我想我认为分析是一个持续的过程(因为我是新手/对此感到兴奋),所以我不会只在(许多)函数中使用它,声明它完成并删除所有装饰器。
-
如果没有trying this,我不会让事情花费数小时。它不花费任何费用,并且可以准确地告诉您正在发生的事情。
-
@jtlz2 您还可以包装函数和类方法以进行分析(可能在单独的分析脚本中)并避免完全按照此处所述添加
@profile装饰器(stackoverflow.com/a/43376466/5874320)。
标签: python profiling decorator python-decorators