我正在研究一個可視化Python配置文件跟蹤的工具,爲此,知道從哪一行調用函數會很有用。profiler:我可以找到什麼叫我的功能?
假設我有以下簡單的程序:
import time
def my_sleep(x):
time.sleep(x)
def main():
my_sleep(1)
my_sleep(2)
main()
如果我在它(python -m cProfile -o a.data a.py
)運行CPROFILE,我得到包含以下數據結構的封文件:
('a.py', 3, 'my_sleep'): (2,
2,
1.4999999999999999e-05,
3.00576,
{('a.py', 6, 'main'): (2,
2,
1.4999999999999999e-05,
3.00576)}),
本質上講,這說my_sleep()
在第6行被main()
調用了兩次,這加起來略多於3秒。
有沒有什麼方法可以找出它被調用的線,而不僅僅是什麼功能?所以在這種情況下,my_sleep()
在第7行被調用1秒,第8行被調用2秒。
您的輸出看起來不像Python文檔中的示例輸出。你在做其他一些格式嗎? https://docs.python.org/3.3/library/profile.html#instant-user-s-manual –
是的,我將它保存爲編組文件('-o a.data')並將其加載python解釋器('marshal.load(open('a.data'))'),然後通過pprint。 – Bai
您是否嘗試過查看控制檯上打印的輸出而不保存文件? –