【发布时间】:2019-03-22 05:06:21
【问题描述】:
我需要在调用一个非常大的 python 程序时保存整个函数调用(如果可能,甚至是行)。
我尝试使用trace.Trace() 和count=1 并收到十几个文件,每个文件的每个执行行的计数,但没有时间。我看不到谁打电话给谁,按什么顺序。
这应该是一个程序无一例外。
任何想法如何做到这一点?
* 我使用的是 Python 2.7。
【问题讨论】:
-
如需计时信息,请参阅How can you profile a script?
-
好吧,我尝试使用 cprofile,甚至使用 pstats.Stats().print_callers() 让所有调用者,但对我来说唯一缺少的是时间顺序。据我所知,排序选项不包括这样的选项。
-
我没有看到任何从分析器获取这种时间信息的方法。另一种方法是使用
sys.settrace并将其连接到您自己的跟踪函数,该函数记录每次调用发生的时间。问题How do I print functions as they are called 的答案有一个定义可以用作settrace的tracefunc 参数的函数的示例。也可以获取包含调用的行的源代码。 -
Here's some more information 关于
settrace()。 -
非常感谢您的帮助。我已经尝试过使用 settrace() ,但它对我也不起作用,因为它太慢了我的程序。我希望尽可能少地干扰执行时间。似乎没有办法做我正在寻找的......
标签: python python-2.7 trace