Python コードをプロファイルするための MacOSX Instruments 質問する

Python コードをプロファイルするための MacOSX Instruments 質問する

MacOSX Xcode Instruments はネイティブ コードのプロファイリングに非常に優れています。ただし、コールスタックには大量の Python 呼び出しも含まれています。Instruments を何らかの方法で Python 対応にすることはできますか?

私が考えられる解決策の 1 つは、何らかのPyEval_EvalFrameExフレームを見つけたときに、ローカル変数 / パラメーターを調べて、異なる Python 呼び出しを分離し、呼び出し情報を表示することです。

私は単なる Python プロファイラーについて尋ねているのではありません。ネイティブ コードをプロファイリングしたいのです。ただし、このネイティブ コード プロファイリングでは、Python スタック フレームを分析および変換するためのさらなるインテリジェンスを追加したいと考えています。

ベストアンサー1

これによればスタックオーバーフローの回答Instrumentsは、トレース。 があるApple ドキュメントこれと、dtraceのOS-Xに関するいくつかの記事を確認すると、ビッグ ナード ランチ他の場所の中でも。

があるパッチこれは、CPythonソースをコンパイルする前に適用して、dtrace用にインストルメント化することができます。自家製しかし、今グーグルで検索しても、現在の Python リリース (2.7.10、3.4/3.5) 用の dtrace プロバイダー サポートを備えた自作レシピの参考資料が見つかりません。試していないので、現在のレシピは--with-dtraceビルド時にスイッチを切り替えるだけで機能するのかもしれません。

PyTexas 2013 からの講演があります:dtrace、Python、そしてあなたここでは、dtrace サポートが含まれた Python のインストール (具体的には Mac でのデモンストレーション) と、コマンド ラインでの dtrace の使用について説明します。

dtrace サポートがインストールされた Python を実行したら、Instruments で確認して使用できると思います。Python インタープリターを OS X アプリケーションに追加する場合 (.framework または他の形式のリンクとして)、コンパイル前にその Python に dtrace パッチが適用されていれば、dtrace で使用できると思います。どちらも試していませんが、dtrace について私が知っていることを考えると、動作するはずです。これが事実であることが確認できたら、投稿します。

おすすめ記事