小编典典

在Python中进行性能分析:谁调用了该函数?

python

我正在使用进行Python分析cProfile。我发现一个需要占用大量CPU时间的函数。我如何找出哪个函数最常调用此重函数?

编辑:

我将解决一个变通方法:我可以在该繁重的函数内编写Python行,以打印调用该函数的名称吗?


阅读 210

收藏
2021-01-20

共1个答案

小编典典

那可能不会直接回答您的问题,但肯定会有所帮助。如果将事件探查器与选项–
sort累计一起使用,它将按累计时间对功能进行排序。这不仅有助于检测繁重的功能,而且有助于检测调用它们的功能。

python -m cProfile --sort cumulative myScript.py

有一种变通方法来获取调用方函数:

import inspect
print inspect.getframeinfo(inspect.currentframe().f_back)[2]

您可以根据需要添加任意数量的f_back,以防需要呼叫者,呼叫者等。如果要计算频繁呼叫,可以执行以下操作:

record = {}

caller = inspect.getframeinfo(inspect.currentframe().f_back)[2]
record[caller] = record.get(caller, 0) + 1

然后按频率顺序打印它们:

print sorted(record.items(), key=lambda a: a[1])
2021-01-20