Pythonのコードのパフォーマンス解析ライブラリ

問題の説明

1、Pythonの開発プログラムは、比較的遅いものコードを決定するために、使用中に遅いです。

2、引き起こされるコードの決定と同様に、大型の過程で開発されたプログラムのためのPythonメモリと

 

ソリューション

プロファイル分析のCPU使用率を使用します

cProfileパイソン及び分析手順、メインレコードcProfileの使用、基準プロファイルできcProfileをプロファイルするために使用することができます。

考えてみましょう次のコードは、(cProfileTest1.py)を分析する必要があります

/ usr / binに/のenvのpython - * -コーディング:UTF-8 - * -

デフのfoo(): = 0
     のI における範囲(100 )。
        合計 + = 私は
     返す合計を

もし __name__ == " __main__ " 
    FOO()

それは、2つの方法で分析することができます。

1、プログラムを変更しないでください

分析手順:

python -m cProfile -o test1.out cProfileTest1.py

結果を見ます:

Pythonの-c " インポートpstats; P = pstats.Stats( 'test1.out'); p.print_stats()"

ビューを実行した後にソート結果:

Pythonの-c " インポートpstats; P = pstats.Stats( 'test1.out'); p.sort_stats( '時間')print_stats()。"

2、プログラムを変更

次のコードを追加:

/ usr / binに/のenvのpython - * -コーディング:UTF-8 - * -

デフのfoo(): = 0
     のI における範囲(100 )。
        合計 + = 私は
     返す合計を
    
もし __name__ == " __main__ " 輸入cProfile
    cProfile.run(" FOO()" 
    終了(0)

次のように業績は以下のとおりです。

標準名:によって命じ

ncalls tottime percall cumtime percallファイル名:LINENO(機能)
     1 0.000 0.000 0.000 0.000 <ストリング>:1(<モジュール>  1 0.000 0.000 0.000 0.000 cProfileTest2.py:4 (FOO)
      {方法1 0.000 0.000 0.000 0.000 ' 無効'' _lsprof.Profiler ' オブジェクト}
      1 0.000 0.000 0.000 0.000 {範囲}

結果はそれを示しています。

「」「
ncalls:関数は、呼び出しの数です
tottime:総走行時間機能、関数呼び出しを除去するための時間の関数
percall:関数が実行平均時間、等しいtottime / ncalls
cumtime:総走行時間機能、実行時の関数呼び出しを含みます
percall:関数が実行平均時間、等しいcumtime / ncalls
ファイル名:名前LINENO(機能)関数の関数の行番号、関数名
「『』

メモリの使用状況を分析memory_profiler使用

あなたはmemory_profilerをインストールする必要があります 

psutilをインストールするPIP
memory_profilerをインストールするPIP

次のコードを分析する必要があります考えてみましょう:

デフmy_func():
    A = [1] *(10 * 6 
    B = [2] *(10 * 7 デルBの
     戻り A

Memory_profilerはどこ以下の2つの方法で記録するために使用されるコードを変更する必要があります。

1、モジュールをインポートしていません

/ usr / binに/のenvのpython - * -コーディング:UTF-8 - * -

#の使用:のpython -m memory_profiler test1.py

@プロフィール
デフmy_func():
    A = [1] *(10 * 6 
    B = [2] *(10 * 7 デルBの
     戻り A
    
もし __name__ == " __main__ " 
    my_func()
    

プロファイル分析:

python -m memory_profiler test1.py

2、インポートモジュール

memory_profiler インポートプロフィール

@プロフィール
デフmy_func():
    A = [1] *(10 * 6 
    B = [2] *(10 * 7 デルBの
     戻り A

次のように完全なコードは次のとおりです。

これは、分析のために直接プログラムを実行することができます。

次のように業績は以下のとおりです。

(py27env)[マイク@ローカルテスト] $パイソンtest1.py
ファイル名:test1.py

ライン    メモリ使用量インクリメント行内容
================================================
     6 29.5のMIB 0.0 のMIB @profile
      7                              DEF :my_func()
      8 29.5のMIB 0.0のMIB A = [1] *(10 * 6  9 29.5のMIB 0.0のMIB B = [2] *(10 * 7  10 29.5のMIB 0.0のMIB        デルB
     11 29.5のMIB 0.0 MIB        返します

 



おすすめ

転載: www.cnblogs.com/zknublx/p/11779467.html