Pythonプロファイラ¶

Statsクラス¶

プロファイラのデータの分析はStatsクラスを使用して行われます。p>クラスpstats.Stats(*ファイル名またはプロファイル,stream=sys.このクラスコンストラクタは、afilename(またはファイル名のリスト)またはProfileインスタンスから”statisticsオブジェクト”のインスタンスを作成します。 出力はstreamで指定されたストリームに出力されます。上記のコンストラクタで選択されたファイルは、profilecProfileのcorrespondingバージョンで作成されている必要があります。 具体的には、thisprofilerの将来のバージョンとのファイル互換性は保証されておらず、otherprofilerによって生成されたファイル、または別のオペレーティングシステムで実行される同じプロファイラとの互換性はありません。 いくつかのファイルが提供されている場合、同一の機能のすべての統計情報が合体するため、複数のプロセスの全体的なビューを単一のレポートで考慮 追加のファイルを既存のStatsadd()cProfile.Profileprofile.Profileオブジェクトをプロファイルデータソースとして使用できます。

Statsオブジェクトには次のメソッドがあります。

strip_dirs()(

Statsクラスのこのメソッドは、ファイル名からすべての先行するpathinformationを削除します。 これは、80列(に近い)内に収まるようにプリントアウトのサイズを小さくするのに非常に便利です。 このメソッドはオブジェクトを変更し、削除された情報は失われます。 Astrip操作を実行した後、オブジェクトは、オブジェクトの初期化とロードの直後のように、そのエントリが「ランダムな」順序であると見なされます。strip_dirs()により、2つの関数名が区別できない場合(同じファイル名の同じ行にあり、同じ関数名を持つ場合)、これら2つのエントリの統計は単一のエ

add(*ファイル名)¶

Statsクラスのこのメソッドは、追加のprofilinginformationを現在のプロファイリングオブジェクトに蓄積します。 その引数は、対応するバージョンのprofile.run()cProfile.run()によって作成されたファイル名を参照する必要があります。 同じ名前の(re:file,line,name)関数の統計は、自動的に単一のfunctionstatisticsに蓄積されます。

dump_stats(filename)¶

Statsオブジェクトにロードされたデータをファイルnamedfilenameに保存します。 ファイルが存在しない場合は作成され、既に存在する場合は上書きされます。 これは、profile.ProfilecProfile.Profileクラスの同じ名前のメソッドと同等です。

sort_stats(*keys)¶

このメソッドは、指定された基準に従ってソートすることにより、Statsオブジェクトを変更します。 引数は、ソートの基礎を識別する文字列またはSortKeyenumのいずれかです(例:'time''name'SortKey.TIMEま Sortkey enums引数は、より堅牢でエラーが発生しにくいという点で、文字列引数よりも利点があります。

複数のキーが指定されている場合、beforethem選択されたすべてのキーに等価性がある場合、追加のキーがassecondary基準で使用されます。 たとえば、sort_stats(SortKey.NAME, SortKey.FILE)は、すべてのエントリを関数名に従ってソートし、ファイル名でソートすることによってすべての関係(同一の関数名)を解決します。

文字列引数では、省略形が明確である限り、任意のキー名に省略形を使用できます。

The following are the valid string and SortKey:

統計に関するすべてのソートは降順(mosttime消費項目を最初に配置)であり、名前、ファイル、行番号は昇順(アルファベット順)で検索されます。 SortKey.NFLSortKey.STDNAMEの微妙な違いは、標準名が印刷された名前のasortであることです。 たとえば、3行目、20行目、および40行目は(ファイル名が同じ場合)、20行目、3行目、および40行目の順に文字列で表示されます。40.In これとは対照的に、SortKey.NFLは行の数値比較を行いますnumbers.In 実際、sort_stats(SortKey.NFL)sort_stats(SortKey.NAME, SortKey.FILENAME, SortKey.LINE)-1012'stdname''calls''time''cumulative'と解釈されます。 このoldstyle形式(数値)を使用すると、一つのソートキー(数値キー)のみが使用され、追加の引数は黙って無視されます。バージョン3.7で追加:SortKey列挙型を追加しました。

reverse_order()(

Statsクラスのこのメソッドは、オブジェクト内の基本リストの順序を逆にします。 デフォルトでは、昇順のvsdescending順序は、選択したソートキーに基づいて適切に選択されていることに注意してください。

print_stats(*制限)¶

Statsprofile.run()add()strip_dirs()のサブジェクトtocaveats)で行われた最後のsort_stats()操作に基づいています。

指定された引数(もしあれば)を使用して、リストを重要なエントリに制限することができます。 最初は、リストは完全なsetofプロファイルされた関数であると見なされます。 各制限は、整数(行の数を選択するため)、または0.0から1の間の小数です。0を含む(行のパーセンテージを選択する)、またはaregular式として解釈される文字列(印刷される標準名と一致するパターン)。いくつかの制限が提供されている場合、それらは順番に適用されます。たとえば、次のようにします。

print_stats(.1, 'foo:')

最初に印刷をリストの最初の10%に制限し、次にファイル名の一部であったprintfunctionsのみ.*foo:。 対照的に、コマンド:p>

print_stats('foo:', .1)

は、ファイル名を持つすべての関数にリストを制限します.*foo:、それらの最初の10%のみを印刷します。

print_callers(*制限)¶

Statsprint_stats()によって提供される順序と同じであり、制限する引数の定義も同じです。 各発信者はそれ自身の行に報告されています。 この形式は、統計を生成したプロファイラーによって若干異なります。

  • profileでは、各呼び出し元の後に括弧内に番号が表示され、この特定の呼び出しが何回行われたかが表示されます。 便宜上、括弧で囲まれていない数字は、関数の累積時間を右側に繰り返します。

  • cProfileでは、各呼び出し元の前に3つの数値があります。thenこの特定の呼び出しが行われた回数、およびこの特定の呼び出し元によっ

print_callees(*制限)(

Statsクラスのこのメソッドは、指定された関数によって呼び出されたすべての関数のリストを出力します。 この呼び出しの方向転換(re:called vsが呼び出された)とは別に、引数andorderingはprint_callers()メソッドと同じです。

get_stats_profile()(

このメソッドは、FunctionProfileのインスタンスへのmappingof関数名を含むStatsProfileのインスタンスを返します。 各FunctionProfileinstanceは、関数の実行にかかった時間、呼び出された回数など、関数のプロファイルに関連する情報を保持します…

バージョン3.9で追加:次のdataclassesを追加しました:StatsProfile,FunctionProfile。次の関数を追加しました。get_stats_profile。

div

Valid String Arg

Valid enum Arg

Meaning

'calls'

SortKey.CALLS

call count

'cumulative'

SortKey.CUMULATIVE

cumulative time

'cumtime'

N/A

cumulative time

'file'

N/A

file name

'filename'

SortKey.FILENAME

file name

'module'

N/A

file name

'ncalls'

N/A

call count

'pcalls'

SortKey.PCALLS

primitive call count

'line'

SortKey.LINE

line number

'name'

SortKey.NAME

function name

'nfl'

SortKey.NFL

name/file/line

'stdname'

SortKey.STDNAME

standard name

'time'

SortKey.P>

内部時間

'tottime'

N/A

内部時間

コメントを残す

メールアドレスが公開されることはありません。