2016-11-09 13 views
0

enter image description here通訳Pythonのプロファイラ

私は簡単なプログラムをプロファイリングするSpyderのIDEでプロファイラを使用しています。関数の1つであるmake_geologyは、コードの中で最も皮肉な部分です。それは24.7時間単位を使用するように見えます(秒ですか?)。しかし、私がmake_geology(すべて私が黄色で強調表示したもの)内で行われたすべての呼び出しを見ると、その合計時間は最大で1.3時間単位になります。

私は、機能に費やされた時間の測定と割り当てを誤解していますか? make_geology = make_geology内のすべてのものに費やされた時間の総計make_geology内のすべてのものに費やされた時間の合計

+0

あなたは[このメソッドは* *](http://stackoverflow.com/a/4299378/23771)しようとしたことがありますか? 1つは、絶対値ではなくパーセント値に敏感なので、何がピギーであるかを直接伝えます。それはなぜあなたにも伝えます。 –

答えて

0

make_geologyは、他のコンポーネント(関数)に「オフロード」されないで、 。このようなものを想像:

def add_and_count(mylist, mynumber): 
    i = 0 
    while i < mynumber: 
     i = i + 1 
    mylist.append(i) 

をmynumberが0の場合、リストのアペンド呼び出しを実行するための時間とほぼ同じである必要がありadd_and_countを実行するための時間を。 mynumberが大きい場合、list.appendはバケツのドロップになります

1

この問題を解決するためにthis PRを提供しました。初めにプロファイラは、次のようになります

profiler_before

最終的な結果は次のようになります。 spyder 3 1 0 dev0 python 3 5 _001

任意の提案や修正は歓迎されています。

よろしく

ウィリアムTrigos