2012-07-06 24 views
1

我已經使用Python的C-API在我的C代碼中調用一些Python代碼,現在我想剖析我的Python代碼的瓶頸。我遇到了PyEval_SetProfile API,我不知道如何使用它。我是否需要編寫我自己的分析功能?通過C-api分析Python(如何?)

如果您可以提供示例或指向我的示例,我將非常感激。

回答

2

如果您只需要知道在Python代碼中花費的時間,而不是(例如),那麼在Python代碼中最花費時間的地方,那麼Python分析工具就不是您想要的。我會編寫一些簡單的C代碼來抽樣Python解釋器調用前後的時間,並使用它。或者,C級分析工具可以將Python解釋器作爲C函數調用進行測量。

如果您需要在Python代碼中進行配置文件,我不建議編寫您自己的配置文件功能。它所做的只是爲您提供原始數據,您仍然必須對其進行彙總和分析。相反,在你的Python代碼中編寫一個Python包裝器,調用cProfile模塊來捕獲你可以檢查的數據。

+0

我在編輯我的問題。通過分析我的意思是我需要找到python部分的瓶頸...... – user1126425 2012-07-07 00:09:03

+0

Ned,我試着用python代碼的cProfile runctx。但有一個問題。我的python代碼實際上是一個數據包解析器,所以當我得到配置文件並用統計數據查看它時(看起來),我看到的數量與一個數據包相對應。此外,針對每個函數顯示的時間爲0.00,這對我來說似乎並不合理。你有什麼建議可以獲得所有數據包的準確時間和綜合結果嗎? – user1126425 2012-07-07 01:15:28