Note
HOMのパフォーマンスモニタ関連のサブモジュール、クラス、メソッドは、時間とメモリの統計情報をそれぞれ単位がミリ秒、バイトでレポートします。
関数 ¶
isRecording()
→ bool
パフォーマンスモニタがHoudiniイベントをレコーディングしていればTrueを返します。
loadProfile(file_path)
→ hou.PerfMonProfile
ディスクからプロファイルを読み込み、その読み込まれたプロファイルを返します。
file_path
が存在しないファイルだったり、無効なHoudiniパフォーマンスモニタプロファイルファイルの場合は、hou.OperationFailedを引き起こします。
saveProfile(profile, file_path)
プロファイルをディスクに保存します。
プロファイルがまだアクティブ中だったり、ファイルをディスクに書き込むことができなかった(つまり、パーミッション問題)場合は、hou.OperationFailedを引き起こします。
activeProfile()
→ hou.PerfMonProfile or None
パフォーマンスモニタペインで現在表示されているプロファイルを返します。
プロファイルがアクティブでなければNone
を返します。
startCookEvent(description, node)
→ hou.PerfMonEvent
ノードのクックに関連したイベントを作成し、それを開始します。そのイベントが停止されると、それがパフォーマンスモニタでログに記録され、クックまたはメモリの統計情報を記録しているプロファイルに追加されます。
PythonオペレータのCodeセクションで、コードブロックの時間やメモリ増加量を測定するために、この関数を使用ます。
クックイベントを返します。
description
時間測定されるイベントの説明。例えば、ここには関数名やコードブロックの説明を記述します。
node
時間測定されるイベントの適用先となるノード。これはhou.OpNodeオブジェクトでなければなりません。PythonオペレータのCodeセクション内からstartCookEvent()をコールする時は、node
を現行ノード(つまり、hou.pwd()
)に設定します。
description
が空っぽの文字列だったり、node
が存在しなかった場合は、hou.OperationFailedを引き起こします。
startEvent(description, auto_nest_events=True)
→ hou.PerfMonEvent
汎用のイベントを作成し、それを開始します。そのイベントが停止されると、それがパフォーマンスモニタでログに記録され、スクリプトまたはメモリの統計情報を記録しているプロファイルに追加されます。
汎用のスクリプト、関数、コードブロックで、時間とメモリ増加量を測定するために、この関数を使用ます。
新しいイベントを返します。
description
開始しているイベントの説明。ここには関数名やスクリプト名やコードブロックの説明を記述します。
auto_nest_events
Trueに設定すると、このイベントが走っている間に開始と停止がされている他のイベントを自動的に'入れ子化'します。このイベントが停止されると、その合計の時間とメモリ量から、その入れ子化されたイベントの時間とメモリ量を引きます。 そうすることで、このイベントの合計の時間とメモリ量が、このイベント自体で実行された負荷を反映し、その入れ子化されたイベントの負荷は含まれません。
description
が空っぽの文字列の場合は、hou.OperationFailedを引き起こします。
startProfile(title, options=None)
→ hou.PerfMonProfile
新しいプロファイルを作成し、イベントをレコーディングできるようにそれを開始します。そのプロファイルが停止されると、それが記録したイベントの統計情報が生成されます。
options
記録するHoudiniイベントのタイプと統計情報を指定したhou.PerfMonRecordOptionsオブジェクト。Noneを渡したり、options
引数を指定しなかった場合は、そのプロファイルは、すべてのイベントと統計情報を記録します。
startPaneEvent(panetype, operation)
→ hou.PerfMonEvent
Pythonペインの処理に関係するイベントを作成し、それを開始します。 このイベントが停止すると、パフォーマンスモニタによってログが記録され、クックまたはメモリ統計情報を記録したプロファイルに追加されます。
この関数を使用することで、Pythonパネルのコードブロックの時間を計測し、コードのメモリ増量を測定することができます。
クックイベントを返します。
panetype
このコードを実行するPythonパネルのタイプ。
operation
このイベントで時間測定される特定の処理。
panetype
またはoperation
のどちらかが空っぽの文字列だった場合は、hou.OperationFailedを引き起こします。
startTimedCookEvent(description, node)
→ hou.PerfMonEvent
このメソッドは廃止され、代わりにstartCookEvent
を使用してください。
startTimedEvent(description, auto_nest_events=True)
→ hou.PerfMonEvent
このメソッドは廃止され、代わりにstartEvent
を使用してください。
サンプル ¶
以下には、新しいプロファイルを開始し、2個の時間測定のイベントを記録し、そのイベントの統計情報を生成する単純なサンプルを載せています:
import hou # 新しいプロファイルを開始します。 # プロファイルが自動的に記録を開始します。 profile = hou.perfMon.startProfile("My Profile") # イベントを開始します。 event = hou.perfMon.startEvent("Code Block 1") # ここで'Code Block 1'のコードを実行します... # イベントを停止します。 event.stop() # もう1個のイベントを開始します。 another_event = hou.perfMon.startEvent("Code Block 2") # ここで'Code Block 2'のコードを実行します... # イベントを停止します。 another_event.stop() # プロファイルを停止します。 # プロファイルは、記録されたイベントの統計情報を自動的に生成します。 # Performance Monitorペインタブで、そのプロファイル統計情報を閲覧できるようになっています。 profile.stop() # JSON形式でプロファイル統計情報をプリントします。 print profile.stats() # プロファイルをディスクに保存します。 profile.save("myProfile.hperf")
See also |