質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

956閲覧

深い階層にある関数のプロファイリングを行いたい

simasima

総合スコア49

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2017/12/01 04:36

現在プログラムの高速化を行おうと考えており、プロファイリングを行っている最中です。

python

1python -m cProfile Process.py 2

のようにしているのですが、1つ下の階層(Process.py が importしているファイル)までしか関数が評価されません。
さらに深い階層の関数を評価するためにはどのようにすれば良いでしょうか。
よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ビッグバンテストならぬ、ビッグバンプロファイリングになりますが。
これ以上細分化したプロファイリングは難しいということでしょうか。

投稿2017/12/01 05:06

mkgrei

総合スコア8560

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

simasima

2017/12/01 05:39

ビッグバンプロファイリングならぬ一斉プロファイリングといったレベルです。。。 現時点で2000行程度のプログラムですが、ドライバを用意してプロファイリングするのがベストなのでしょうか。
mkgrei

2017/12/01 06:22

本当に一度限りのプロファイリングで、今すぐどこが時間がかかるのかだけ知りたくて、それを直したらもう二度とこのコードを使わいないのであればいいのです。 今後付き合っていくことを考えるとドライバを用意してやるほうが技術的負荷を背負わなくて済むかと思います。 ちなみに手元で試してみましたが、python3.5.2でプロファイリングがずっと下のモジュールまで行われていました。 むしろnumpyなどをインポートするとインポート関連のコールで埋め尽くされて見にくい状況になりました。 検索してみるとインポート部分をプロファイリングから外す方法のほうが議論されているようです。 使用しているバージョンについて変更しても同じような結果になりますか。
simasima

2017/12/01 06:45

ありがとうございます!まだ経験が浅いので、ご指摘嬉しく思います。 私自身の環境も同じpython3.5.2でした。そう考えるとちょっと私の環境がおかしいようですね。。。 とりあえずline_profilerを導入することでなんとか解決は致しました。
simasima

2017/12/01 08:25

その後コーディングを変更したところ、ご指摘の通りもっとも深い階層の関数がプロファイリングされました。 ありがとうございました。
guest

0

自己解決

bash

1python -m cProfile -s cumulative Process.py

のようにファイル全体をプロファイリングするのではなく、

メインのプログラムをmain()で囲み、

python

1if __name__ == "__main__": 2 3 import cProfile 4 cProfile.run('main()', sort='time') 5

として、

bash

1python Process.py

を実行すると、きちんともっとも深いレベルの関数がプロファイリングされました。

投稿2017/12/01 08:29

simasima

総合スコア49

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問