我只是在分析我的 Python 程序,看看为什么它看起来相当慢。我发现它的大部分运行时间都花在了inspect.stack()
方法(用于输出带有模块和行号的调试消息),每次调用 0.005 秒。这看起来相当高;是inspect.stack
真的这么慢,还是我的程序有问题?
inspect.stack(0)
可以比inspect.stack()
。即便如此,最好的方法是完全避免调用它,也许可以使用如下所示的模式:
frame = inspect.currentframe()
while frame:
if has_what_i_want(frame): # customize
return what_i_want(frame) # customize
frame = frame.f_back
请注意最后一个frame.f_back
is None
,然后循环就会结束。
sys._getframe(1)
显然不应该使用,因为它是一个内部方法。
作为备选,inspect.getouterframes(inspect.currentframe())
可以循环,但这预计会比上述方法慢。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)