gpt4 book ai didi

python - 如何分析我的 python 应用程序的类方法?

转载 作者:行者123 更新时间:2023-11-28 16:48:24 24 4
gpt4 key购买 nike

过去我在同一个文件中编写了所有函数的 python 代码,我可以使用以下代码分析我的程序:

这是我写的装饰器:

def do_profile(cond):
def resdec(f):
if not cond:
return f
return profile(f)
return resdec

这就是我使用它的方式:

@do_profile(DO_PROFILE)
def my_func():
return 1

然后我会在我的脚本上调用 kernprof.py:

kernprof.py  -l my_program.py

与此同时,我对 OOP 更加熟悉,我将我的程序重写为许多类,现在程序是这样启动的:

 if __name__ == "__main__":
my_app = myApp()
my_app.run()

myApp 是一个与其他类进行大量通信的类:

class myApp():
@do_profile(DO_PROFILE)
def foo_method(self, arg1):
pass

我在每个 myApp 方法前面添加了 do_profile 装饰器,但是如果我运行 kernprof.py,生成的 .prof 文件为空

那么分析类方法的最简单方法是什么?我真的很想用一个装饰器和一个标志来打开/关闭它。

EDIT1: 我对这里最简单的可能解决方案非常感兴趣。找到一个装饰器是一个优雅的解决方案,但也许事情可以做得更容易。我不想做的是使用像 cProfile's 配置文件 profile.runctx('self.baz()', globals(), locals()) 这样的东西。在处理许多类和方法时,这不是一个实用的解决方案。

最佳答案

看看Yappi

要分析一段代码,只需使用:

import yappi
[...]
yapp.start()
some_function_that_needs_profiling()
yappi.print_stats()

关于python - 如何分析我的 python 应用程序的类方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11358963/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com