python traceback - 性能问题

时间:2017-01-05 09:47:29

标签: python stack-trace callstack traceback

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

为此,我们使用PopupWindow popupWindow = new PopupWindow(testView, LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT, false); 来提取python的调用堆栈。 当稍后发生异常时,我们在每个元素上使用traceback.extract_stack()来格式化并打印堆栈跟踪。

问题是函数traceback.format_list(abc)太慢了。我将代码从1.7秒减慢到11秒。

是否存在存储堆栈跟踪的功能以便以后能够使用/打印? stacktrace getter必须非常快。格式化功能可能很慢,这没问题。

示例:

extract_stack

1 个答案:

答案 0 :(得分:2)

我解决了问题!!!

我们可以使用db.Logging.aggregate([ { "$match": { "action": { "$in": [ "resetDslVerify", "assia/reset/RequestQueryOs" ] } } }, { "$group": { "_id": "$idOrdem", "timestamp1": { "$max": "$timestamp" } "timestamp2": { "$min": "$timestamp" } "timeElapsed": { "$max": "$timeElapsed" } } } ]) 来获取&#34; stt_obj = sys._getframe().f_back?&#34;然后我们可以使用<frame>estt_obj = traceback.extract_stack(f=stt_obj)将堆栈跟踪作为字符串列表。