gpt4 book ai didi

python回溯-性能问题

转载 作者:行者123 更新时间:2023-12-01 03:24:52 25 4
gpt4 key购买 nike

我们有一个 python 脚本,它使用 c 库来调用一些低级函数。由于代码结构原因,我们希望在每次 c 调用之前存储堆栈跟踪/调用堆栈。

为此,我们使用 traceback.extract_stack() 来提取 python 的调用堆栈。当稍后发生异常时,我们对每个元素使用 traceback.format_list(abc) 来格式化并打印堆栈跟踪。

问题是函数extract_stack太慢了。我将代码速度从 1.7 秒减慢到 11 秒。

是否有任何函数可以存储堆栈跟踪以便以后能够使用/打印它?堆栈跟踪 getter 必须非常快。格式化功能可能会很慢,但这没问题。

示例:

Stack Trace:
- LXScript: '_LXS:TOOL:RUNLX'
File "_LXS:TOOL:RUNLX", line 13, in <module>
File "lxs", line 1, in <module>
- UNIFACE ACTIVATE: 'ACTQREC_SVC' 'EXECLXSRP'
- LXScript: '_DATATRT:ACTQREC:EXECUTE@Main:run'
File "_LXS:TOOL:RUNLX", line 13, in <module>
File "lxs", line 1, in <module>
File "<string>", line 63, in run
File "<string>", line 97, in __doAll
File "<string>", line 127, in __do
File "_DATATRT:ACTQREC:EXECUTE", line 7, in do
- UNIFACE ACTIVATE: 'ACTQ_CSVC' 'EXECBYREC'
- LXScript: 'TOOL:ACTQ:SYNLAB_DATA@Main:runOnBeforeExec'
File "TOOL:ACTQ:SYNLAB_DATA", line 1, in <module>
ImportError: No module named 'localls'

最佳答案

我解决了问题!!!

我们可以使用stt_obj = sys._getframe().f_back得到“<frame>?”然后我们可以使用estt_obj = traceback.extract_stack(f=stt_obj)traceback.format_list(estt_obj)以字符串列表形式获取堆栈跟踪。

关于python回溯-性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41481722/

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