我正在使用进行Python分析cProfile。我发现一个需要占用大量CPU时间的函数。我如何找出哪个函数最常调用此重函数?
cProfile
编辑:
我将解决一个变通方法:我可以在该繁重的函数内编写Python行,以打印调用该函数的名称吗?
那可能不会直接回答您的问题,但肯定会有所帮助。如果将事件探查器与选项– 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])