WorkItem¶
WorkItemとは¶
PDGの基本的な処理単位であるWorkItemは、ジョブまたはタスクのようなものです。WorkItemは、ジョブまたはタスクを実行するために必要な情報を保持し、依存関係を表現するために使用されます。WorkItemは、Houdiniで作成されたプロシージャルコンテンツや、外部のプログラムやスクリプトによって生成されるコンテンツを表すことができます。
WorkItemは、トップネットワーク内のノードから生成されます。ワークアイテムは入力と出力を持ち、この入出力によって依存関係が表現されます。ワークアイテムは、トップネットワーク内のノード間を流れるデータのコンテナであり、トップネットワークの最上位のWorkItemが完了すると、そのWorkItemの出力がトップレベルの出力として保存されます。
WorkItemは、PDGで処理されるすべての情報を含みます。WorkItemは、ジョブの状態を表す属性、ジョブの進捗を表すパラメータ、ジョブの出力を表すファイルなど、様々な種類の情報を保持することができます。
参考: https://www.sidefx.com/ja/docs/houdini/tops/pdg/WorkItem.html
PythonのAPI
https://www.sidefx.com/ja/docs/houdini/tops/pdg/WorkItem.html
Out-Of-Process¶
起動中のHoudiniではなく、別プロセスで実行する場合OutofProcessの指定をする。
Evaluate Script During を Cook Out-of-Process にすることで、別プロセスで実行できる。
このときどのPythonで実行するかは指定する。
カスタム指定はこうする。
Out-of-processの場合、workItemの情報を受け渡すときは、DIspatchされるタイミングで json にDumpされ、
pdgjson を経由して各プロセスに受け渡しされる。
dumpされた各種ファイル(外部で実行されるもの)は、Tempディレクトリ以下に生成される。
PDGの各ワーカーは、すべての環境があるとは限らない。
そのため、実行するファイルはPDG_TEMP以下にPDGライブラリも含めてコピーされる。
そしてコピーされたPythonスクリプトをPDGJobAPIが実行する。
https://www.sidefx.com/ja/docs/houdini/tops/jobapi.html
Out-Of-Processの場合、set####Attrib した場合ネットワークを介してPDGワークアイテムに送り返す。
ログを見るとこんな感じになってる。
JobAPI(ジョブスクリプト)として扱われる。
JobAPIは pdgjson と pdgcmd がある。
pdgjson¶
PDGのOut-of-ProcessでWorkItemの情報を受け渡す方法は、DispatchされるタイミングでjsonにDumpされ、pdgjsonを経由して各プロセスに受け渡されます。
このpdgjsonは、PDG APIの一部であり、JobAPIとしても使用されます。pdgjsonファイルは、WorkItemの属性を格納するために使用され、WorkItemの生成時に自動的に作成されます。
pdgjsonは、WorkItemを生成するときに自動的に作成され、WorkItemの属性を格納するために使用されます。pdgjsonファイルには、WorkItemの属性の情報が含まれます。これは、ワークアイテムを処理するために必要な情報を含みます。pdgjsonファイルは、ジョブスクリプトで使用することもできます。
pdgjsonは、JSON形式で保存されています。pdgjsonファイルを作成するには、WorkItemごとにファイルを作成する必要があります。PDGは、これを自動的に行います。pdgjsonファイルは、WorkItemの属性を保持するために使用されます。WorkItemには、ジョブの状態を表す属性、ジョブの進捗を表すパラメータ、ジョブの出力を表すファイルなど、様々な種類の情報を保持することができます。
pdgjsonファイルは、ワークフローの状態を監視するために使用されます。pdgjsonファイルを使用することで、ワークフローの状態を監視したり、ワークフローの状態を変更したりすることができます。pdgjsonファイルを使用することで、ワークフローの状態をプログラムで制御することができます。
pdgcmd¶
pdgcmdとは、PDGのジョブスクリプトを実行するためのコマンドラインツールです。pdgcmdを使用することで、ジョブスクリプトを作成、編集、実行することができます。また、pdgcmdを使用して、PDGジョブを手動で実行したり、ジョブの状態を監視したりすることができます。
pdgcmdには、次のようなコマンドがあります。
-
cook: 指定されたWorkItemを実行します。
-
generate: 指定されたWorkItemの出力ファイルを生成します。
-
status: 指定されたWorkItemの現在のステータスを表示します。
-
log: 指定されたWorkItemのログを表示します。
-
kill: 指定されたWorkItemを強制終了します。
参考: https://www.sidefx.com/ja/docs/houdini/tops/pdg/pdgcmd.html