Inheritance |
|
¶
Methods from pdg.TypeInstance ¶
type
: pdg.BaseType
Property
このインスタンスの構築に使用されているpdg.BaseTypeオブジェクト。
typeName
: str
Property
type
オブジェクトのタイプ名。
Methods from pdg.SchedulerBase ¶
applicationBin(name, work_item)
→ str
指定した名前のアプリケーションのパスを返します。
work_item
引数を使用することで、Schedulerノード上のパラメータを評価することができます。
例: scheduler.applicationBin('python', None)
はPythonベースのジョブで使用されるPython実行可能ファイルのパスを返します。
cleanTempDirectory()
一時ディレクトリとその内容を削除します。
isCompressWorkItemData
: bool
Property
ワークアイテムJSONデータを圧縮するようにスケジューラが構成されている場合はTrue
を返します。
isWaitForFailures
: bool
Property
失敗したワークアイテムがクックを終了まで解決されるのを待つようにスケジューラが構成されている場合はTrue
を返します。
dependencyGraph(expand_partitions=False)
→ tuple
of dict
従来どおりこのスケジューラによって処理されるワークアイテムの静的ディペンデンシーグラフを返します。 このグラフは、ワークアイテム->ディペンデンシーのマップ、ワークアイテム->ディペンダントのマップ、現在クックの準備ができているワークアイテムのリストを含んだタプルとして表現されています。
expand_partitions
引数は、パーティションを通常のワークアイテムのみを含んだ平坦なディペンデンシーグラフに展開するのか、または、パーティションをタプル内に保持するのかを指定します。
name
: str
Property
スケジューラの名前。
cookError(message)
このノードのクックエラーを出します。
cookWarning(message)
このノードのクック警告を出します。
cookWorkItem(work_item)
ワークアイテムのisInProcess
プロパティがTrue
に設定されている場合、その指定されたIn-Processワークアイテムをクックします。
evaluateBoolOverride(node, prefix, parm, work_item, default_value)
→ bool
スケジューラパラメータが評価されたブール値を返し、このメソッドに渡されたノードによってそのスケジューラパラメータが上書きされているかどうかを調べることができます。
このメソッドは、引数に渡されたノードによってスケジューラパラメータが上書きされていた場合、その上書きされたスケジューラパラメータ値を返します。 上書きされていない場合、そのスケジューラの評価されたパラメータ値を返します。 指定したパラメータがノードにもスケジューラにも見つけることができなかった場合、このメソッドに渡されたデフォルト値が返されます。
node
引数には、スケジューラでクックされている現行ワークアイテムのノードを指定してください。
prefix
パラメータには、パラメータの接頭辞を指定してください。
例えば、上書き可能なLocal Schedulerパラメータすべてに“local”接頭辞が付いています。
parm
はパラメータの名前です。
work_item
はスケジューラで現在クックされているワークアイテムです。
default_value
はparm
をノードにもスケジューラにも見つけることができなかった場合に返す値です。
evaluateFloatOverride(node, prefix, parm, work_item, default_value)
→ float
スケジューラパラメータを評価したfloat値を返し、このメソッドに渡されたノードでそのスケジューラパラメータがオーバーライドされているかどうかをチェックします。
このメソッドは、このメソッドに渡されたノードによってスケジューラパラメータがオーバーライドされていれば、そのパラメータ値を返します。 オーバーライドされていなければ、スケジューラが評価したパラメータ値を返します。 このノードまたはスケジューラでそのパラメータが見つからなかった場合、このメソッドに渡されたデフォルト値が返されます。
node
引数には、このスケジューラでクックされている現行ワークアイテムのノードを指定してください。
prefix
パラメータには、そのパラメータの接頭辞を指定してください。
例えば、オーバーライド可能なすべてのLocal Schedulerパラメータ名の頭には“local”が付いています。
parm
は、そのパラメータの名前です。
work_item
は、このスケジューラで現在クックされているワークアイテムです。
default_value
は、そのパラメータがノードまたはスケジューラで見つからなかった場合に返す値です。
evaluateIntOverride(node, prefix, parm, work_item, default_value)
→ int
スケジューラパラメータを評価した整数値を返し、このメソッドに渡されたノードでそのスケジューラパラメータがオーバーライドされているかどうかをチェックします。
このメソッドは、このメソッドに渡されたノードによってスケジューラパラメータがオーバーライドされていれば、そのパラメータ値を返します。 オーバーライドされていなければ、スケジューラが評価したパラメータ値を返します。 このノードまたはスケジューラでそのパラメータが見つからなかった場合、このメソッドに渡されたデフォルト値が返されます。
node
引数には、このスケジューラでクックされている現行ワークアイテムのノードを指定してください。
prefix
パラメータには、そのパラメータの接頭辞を指定してください。
例えば、オーバーライド可能なすべてのLocal Schedulerパラメータ名の頭には“local”が付いています。
parm
は、そのパラメータの名前です。
work_item
は、このスケジューラで現在クックされているワークアイテムです。
default_value
は、そのパラメータがノードまたはスケジューラで見つからなかった場合に返す値です。
evaluateStringOverride(node, prefix, parm, work_item, default_value)
→ str
スケジューラパラメータを評価した文字列値を返し、このメソッドに渡されたノードでそのスケジューラパラメータがオーバーライドされているかどうかをチェックします。
このメソッドは、このメソッドに渡されたノードによってスケジューラパラメータがオーバーライドされていれば、そのパラメータ値を返します。 オーバーライドされていなければ、スケジューラが評価したパラメータ値を返します。 このノードまたはスケジューラでそのパラメータが見つからなかった場合、このメソッドに渡されたデフォルト値が返されます。
node
引数には、このスケジューラでクックされている現行ワークアイテムのノードを指定してください。
prefix
パラメータには、そのパラメータの接頭辞を指定してください。
例えば、オーバーライド可能なすべてのLocal Schedulerパラメータ名の頭には“local”が付いています。
parm
は、そのパラメータの名前です。
work_item
は、このスケジューラで現在クックされているワークアイテムです。
default_value
は、そのパラメータがノードまたはスケジューラで見つからなかった場合に返す値です。
expandCommandTokens(item_command, work_item)
→ str
指定したコマンド内の特別なPDGトークンをスケジューラ特有の値に置換します。
パスとコマンド文字列で使用可能なテキストトークンがいくつかあります。 これらのトークンの目的は、特定のスケジューラで行なう必要のある置換処理を指定できるようにすることです。 スケジューラをローカルマシンにのみ限定すると、パスは絶対パスで間に合います。 ファームスケジューラの場合、マシン固有の置換ができるように環境変数や他の仕組みに基づいてパスを指定する必要があります。 それらのトークンは以下のとおりです:
-
__PDG_ITEM_NAME__
-
__PDG_DIR__
-
__PDG_TEMP__
-
__PDG_SCRIPTDIR__
-
__PDG_RESULT_SERVER__
-
__PDG_PYTHON__
-
__PDG_HYTHON__
-
__PDG_HFS__
formatTransferPath(local_path, default_type=pdg.fileTransferFile.TempDir, local=True)
→ str
このスケジューラ上でpdg.Scheduler.transferFileをコールしてファイルを転送する場合にlocal_path
のコピー先となる宛先パスを返します。
local
は、ローカルファイルまたはリモートファイルのパス接頭辞を出力内で使用するかどうかを決めます。
スクリプトとアセットは、それぞれPDGスクリプトディレクトリとPDGアセットディレクトリに転送されます。
それ以外では、default_type
がファイルの転送先を決めます。
getPollingClient()
→ PDGNPollingClient
このスケジューラのMQサーバーのポーリング(問い合わせ)クライアントがあれば、それを返します。 なければ(例えば、このスケジューラがローカルの場合)Noneを返します。
isWorkItemReady(workitem_id, index)
→ pdg.workItemReadyResult
指定したワークアイテムがクックの準備ができている場合はpdg.workItemReadyResult.WorkItemReady
を返します。
そのワークアイテムが依存関係に失敗している場合はWorkItemFailed
列挙エントリーを返します。
そのワークアイテムがまだ待機中の場合はWorkItemBlocked
を返します。
ワークアイテムがバッチでない場合、index
には-1を指定してください。
ワークアイテムがバッチ内のサブアイテムの場合、index
には、そのサブアイテムのバッチインデックスを指定してください。
jobName(work_item)
→ str
ワークアイテムの普段のファームジョブ名を返します。
ワークアイテムにカスタムラベルが設定されていれば、この関数はそのラベルをそのまま返します。
それ以外の場合、@pdg_name @pdg_index:4 @pdg_frame:2
の書式による文字列を返します。
localizePath(path)
→ str
スケジューラの作業ディレクトリを基準にリモートパスを展開します。
これは、__PDG_DIR__
, __PDG_TEMP__
, __PDG_SCRIPTDIR__
を現行マシン上の絶対パスに置換します。
delocalizePath(path)
→ str
指定したパスを可能な限り__PDG_DIR__
スケジューラテキストトークンに基づいたパスで返します。
onWorkItemAddOutput(workitem_id, index, path, tag, checksum, active_only=False)
ワークアイテムに新しい出力ファイルがあることを示す時にコールされます。
path
はファイルパスの文字列です。
tag
はファイルタグ文字列で、checksum
は整数値です。
ワークアイテムがバッチでない場合、index
には-1を指定してください。
ワークアイテムがバッチ内のサブアイテムの場合、index
には、そのサブアイテムのバッチインデックスを指定してください。
active_only
がTrue
の場合、スケジューラは、既にクック済みのワークアイテムまたはスケジューラでアクティブになっていないワークアイテムに呼応するこのメソッドのコールを無視します。
onWorkItemAddOutputs(workitem_id, index, paths, tag, checksums, active_only=False)
ワークアイテムに新しい出力ファイルの配列があることを示す時にコールされます。
paths
はファイルパスの文字列の配列で、tag
はファイルタグ文字列またはタグ文字列の配列で、
checksums
は整数値の配列です。
ワークアイテムがバッチでない場合、index
には-1を指定してください。
ワークアイテムがバッチ内のサブアイテムの場合、index
には、そのサブアイテムのバッチインデックスを指定してください。
active_only
がTrue
の場合、スケジューラは、既にクック済みのワークアイテムまたはスケジューラでアクティブになっていないワークアイテムに呼応するこのメソッドのコールを無視します。
このメソッドは、pdg.SchedulerBase.onWorkItemAddOutputを複数回コールするよりも効率が良いです。
onWorkItemAppendLog(workitem_id, index, log_data, log_type)
指定したログデータをワークアイテムのログの最後に追加します。
log_type
には、pdg.workItemLogTypeからどれかの列挙値を設定してください。
ワークアイテムがバッチでない場合、index
には-1を指定してください。
ワークアイテムがバッチ内のサブアイテムの場合、index
には、そのサブアイテムのバッチインデックスを指定してください。
onWorkItemCanceled(workitem_id, index)
ワークアイテムがキャンセルされた時にコールされます。
ワークアイテムがバッチでない場合、index
には-1を指定してください。
ワークアイテムがバッチ内のサブアイテムの場合、index
には、そのサブアイテムのバッチインデックスを指定してください。
onWorkItemFailed(workitem_id, index)
ワークアイテムが失敗した時にコールされます。
ワークアイテムがバッチでない場合、index
には-1を指定してください。
ワークアイテムがバッチ内のサブアイテムの場合、index
には、そのサブアイテムのバッチインデックスを指定してください。
onWorkItemFileResult(workitem_id, index, result, tag, checksum, active_only=False)
このメソッドは廃止されました。代わりにpdg.SchedulerBase.onWorkItemAddOutputを使用してください。
onWorkItemInvalidateCache(workitem_id, index)
出力ファイルリストを変更せずに、ワークアイテムのキャッシュを無効にします。 これにより、次のクックでキャッシュファイルを使用せずに、下流のワークアイテムも再クックされます。 これは、ワークアイテムに対して直接pdg.WorkItem.invalidateCacheをコールすることと同じ効果があります。
onWorkItemSetAttribute(workitem_id, attribute_name, values)
このメソッドは廃止されました。pdg.SchedulerBase.onWorkItemSetStringAttribや他のメソッドを使用してアトリビュートを追加してください。
ワークアイテムのアトリビュート値が設定/変更された時にコールされます。
values
はstr
、float
、int
のどれかの値の配列で、attribute_name
はそのアトリビュートの文字列名です。
onWorkItemSetCookPercent(workitem_id, index, cook_percent)
指定したワークアイテムのクックパーセンテージを設定します。
cook_percent
: ワークアイテムの新しい完了率。0
はまだ開始されていないことを意味し、100
はクックが完了したことを意味します。
ワークアイテムがバッチでない場合、index
には-1を指定してください。
ワークアイテムがバッチ内のサブアイテムの場合、index
には、そのサブアイテムのバッチインデックスを指定してください。
onWorkItemSetCustomState(workitem_id, index, custom_state)
指定したワークアイテムのカスタムステート文字列を設定します。
ワークアイテムがバッチでない場合、index
には-1を指定してください。
ワークアイテムがバッチ内のサブアイテムの場合、index
には、そのサブアイテムのバッチインデックスを指定してください。
onWorkItemSetStringAttrib(workitem_id, index, attribute_name, value, [attrib_index])
ワークアイテム上にアトリビュート値が設定/変更された時にコールされます。
attribute_name
は、そのアトリビュートの名前です。
attrib_index
を渡した場合、アトリビュート内のそのインデックスに値が設定されます。
その場合、value
には文字列を指定してください。
それ以外の場合、value
には文字列のリストを指定してください。
ワークアイテムがバッチでない場合、index
には-1を指定してください。
ワークアイテムがバッチ内のサブアイテムの場合、index
には、そのサブアイテムのバッチインデックスを指定してください。
onWorkItemSetIntAttrib(workitem_id, index, attribute_name, value, [attrib_index])
ワークアイテム上にアトリビュート値が設定/変更された時にコールされます。
attribute_name
は、そのアトリビュートの名前です。
attrib_index
を渡した場合、アトリビュート内のそのインデックスに値が設定されます。
その場合、value
には整数を指定してください。
それ以外の場合、value
には値のリストを指定してください。
ワークアイテムがバッチでない場合、index
には-1を指定してください。
ワークアイテムがバッチ内のサブアイテムの場合、index
には、そのサブアイテムのバッチインデックスを指定してください。
onWorkItemSetFloatAttrib(workitem_id, index, attribute_name, value, [attrib_index])
ワークアイテム上にアトリビュート値が設定/変更された時にコールされます。
attribute_name
は、そのアトリビュートの名前です。
attrib_index
を渡した場合、アトリビュート内のそのインデックスに値が設定されます。
その場合、value
にはfloatを指定してください。
それ以外の場合、value
には値のリストを指定してください。
ワークアイテムがバッチでない場合、index
には-1を指定してください。
ワークアイテムがバッチ内のサブアイテムの場合、index
には、そのサブアイテムのバッチインデックスを指定してください。
onWorkItemSetFileAttrib(workitem_id, index, attribute_name, value, [attrib_index])
ワークアイテム上にアトリビュート値が設定/変更された時にコールされます。
attribute_name
は、そのアトリビュートの名前です。
attrib_index
を渡した場合、アトリビュート内のそのインデックスに値が設定されます。
その場合、value
にはpdg.Fileを指定してください。
それ以外の場合、value
にはpdg.Fileのリストを指定してください。
ワークアイテムがバッチでない場合、index
には-1を指定してください。
ワークアイテムがバッチ内のサブアイテムの場合、index
には、そのサブアイテムのバッチインデックスを指定してください。
onWorkItemSetPyObjectAttrib(workitem_id, index, attribute_name, object_repr)
ワークアイテム上にアトリビュート値が設定/変更された時にコールされます。
object_repr
にはPythonオブジェクトのrepr
文字列を指定し、attribute_name
には、そのアトリビュートの文字列名を指定してください。
ワークアイテムがバッチでない場合、index
には-1を指定してください。
ワークアイテムがバッチ内のサブアイテムの場合、index
には、そのサブアイテムのバッチインデックスを指定してください。
onWorkItemStartCook(workitem_id, index, clear_outputs=False)
ワークアイテムがクックを開始した時にコールされます。 ワークアイテムが既にクックを完了していれば、このメソッドは何の効果もありません。
ワークアイテムがバッチでない場合、index
には-1を指定してください。
ワークアイテムがバッチ内のサブアイテムの場合、index
には、そのサブアイテムのバッチインデックスを指定してください。
clear_outputs
がTrue
の場合、以前のクック以降にワークアイテムに追加された既存の出力ファイルがクリアされます。
onWorkItemSucceeded(workitem_id, index)
ワークアイテムが成功して完了した時にコールされます。
指定したワークアイテムがバッチでない場合はindex
に-1を、バッチ内のサブアイテムの場合はそのワークアイテムのバッチインデックスを指定してください。
getStatusURI(work_item)
→ str
指定したワークアイテムのステータスURIを返します。
これは、ワークアイテムのMMB詳細ウィンドウで表示されます。
ローカルファイルをfile:///
形式で、ウェブページをhttp://
形式で表示することができます。
getLogURI(work_item)
→ str
指定したワークアイテムのログURIを返します。
これは、ワークアイテムのMMB詳細ウィンドウで表示され、さらに特別な@pdg_log
アトリビュートを利用することができます。
ローカルファイルをfile:///
形式で、ウェブページをhttp://
形式で表示することができます。
submitAsJob(graph_name, node_name)
→ str
このスケジューラを使って、現行ネットワークをスタンドアローンジョブとして投入します。
典型的に、このジョブはhython
プロセスになり、現行.hip
ファイルを読み込んで、そのジョブを投入した時点でのスケジューラでのtopnet
の表示ノードをクックします。
そのtopnet
のクックに使用されるスケジューラは、topnet
Default TOP SchedulerパラメータまたはTOPノードのTOP Scheduler Override
パラメータで決まります。
runOnMainThread(wait, function, work_item=None, *args, **kwargs)
→ object
or pdg.PyDeferredTask
指定したコール可能オブジェクトのfunction
をメインスレッドで実行します。
wait
がTrue
の場合、このメソッドは、そのfunction
の実行が終了するまでブロックされます。
wait
がFalse
の場合、このメソッドは即座に返されます。
wait
がTrue
の場合、このメソッドは、function
で生成された戻り値を返します。
wait
がFalse
の場合、このメソッドは、メインスレッドで実行されるタスクを参照したpdg.PyDeferredTaskハンドルを返します。
このハンドルに対してpdg.PyDeferredTask.waitをコールすることで、いつでもそのタスク上で待機することができます。
追加の位置引数とキーワード引数は、function
が呼び出された時にそのfunction
に渡されます。
このメソッドは、function
を評価する際に特別なwork_item
キーワード引数を見て、どのワークアイテムをアクティブにするのかを決めます。
その引数を指定すると、そのfunction
が実行するパラメータ評価にそのワークアイテムが使用されます。
メインスレッドで1度に実行できるのは1個の関数だけです。
このメソッドがコールされる度に、そのfunction
が保留中のメインスレッドコールのキューに追加されます。
これらのキューは、PDGグラフがクックされた時にメインスレッドで処理されます。
このグラフがキャンセルされると、まだ実行が開始されていないキューに入ったオペレーションもキャンセルされます。
このメソッドで待機中のスクリプトはブロック解除されて、それが返す結果はNone
になります。
例えば、Python Script TOP内に以下のコードを記述すると、Qtダイアログ内のOKボタンがクリックされるまでクックの継続をブロックするQtメッセージを表示するワークアイテムが作成されます:
def show_dialog(message, text): from hutil.Qt import QtWidgets dialog = QtWidgets.QMessageBox() dialog.setWindowTitle(message) dialog.setText(text) dialog.exec_() work_item.node.scheduler.runOnMainThread( True, show_dialog, "Cook PDG Message", "Click 'OK' to continue cooking.")
transferFile(local_path, default_type=pdg.fileTransferType.TempDir)
→ bool
ローカルファイルをスケジューラの作業ディレクトリに転送し、必要に応じて中間パスを作成します。
成功するとTrue
を返し、ファイル転送中にエラーが起きると例外が引き起こされます。
スクリプトとアセットは、それぞれPDGスクリプトディレクトリとPDGアセットディレクトリに転送されます。
それ以外のファイルの場合、default_type
がそのファイルの転送先を決めます。
workingDir(local)
→ str
local
がTrue
の場合、作業ディレクトリのローカル絶対パスを返します。
False
の場合、このスケジューラ特有のそのパスのリモート
バージョンを返します。
これは__PDG_DIR__
と等価です。
tempDir(local)
→ str
local
がTrue
の場合、一時ディレクトリのローカル絶対パスを返します。
False
の場合、このスケジューラ特有のそのパスのリモート
バージョンを返します。
これは、ログファイルやスクリプトファイルなどのクックの一時ファイルの保存に使用されるpdgtemp
サブディレクトリを含んだディレクトリです。
scriptDir(local)
→ str
local
がTrue
の場合、一時スクリプトディレクトリのローカル絶対パスを返します。
False
の場合、このスケジューラ特有のそのパスのリモート
バージョンを返します。
これは、tempDir(local) + "/scripts"
と等価のパスを返す便利メソッドです。
logDir(local)
→ str
local
がTrue
の場合、一時ログディレクトリのローカル絶対パスを返します。
False
の場合、このスケジューラ特有のそのパスのリモート
バージョンを返します。
これは、tempDir(local) + "/logs"
と等価のパスを返す便利メソッドです。
preExecProcess()
→ None
子プロセスが実行される直前にローカルサブプロセスでコールしてください(Posixのみ)。 新しいセッションを作成し、os.killpgで利用できるように新しいpidと同じgroupidを割り当てます。 これによって、サブプロセスツリー全体をクリーンアップすることができます。 さらに、そのサブプロセスの寿命は親プロセスに依存するので、その親プロセスが死亡するとSIGTERMがそのサブプロセスに送信されます。
postExecProcess(pid)
→ None
ローカルサブプロセスを起動した後に、そのローカルサブプロセスを設定する時にコールします。 サブプロセスの寿命は親プロセスに依存します。
maxThreads()
→ int
プロセスで利用可能な論理CPUコア数を返します。
これは、hou.setMaxThreads()またはHOUDINI_MAXTHREADS
環境変数で変更しない限りローカルマシンのコア数と同じです。
dataDir(local)
→ str
local
がTrue
の場合、一時データディレクトリのローカル絶対パスを返します。
False
の場合、このスケジューラ特有のそのパスのリモート
バージョンを返します。
これは、tempDir(local) + "/data"
と等価のパスを返す便利メソッドです。
このディレクトリには、通常ではジョブスクリプトで使用するJSONフォーマットでシリアライズされたワークアイテムが格納されます。
setAcceptInProcess(accept_in_process)
スケジューラがIn-Processワークアイテムを受け入れるかどうかを設定します。
デフォルトでは、これはFalse
になっています(In-Process Scheduler TOPを除く)。
setWorkingDir(local_path, remote_path)
→ None
ローカル作業ディレクトリパスとリモート作業ディレクトリパスの値を設定します。
workingDir
を参照してください。
setTempDir(local_path, remote_path)
→ None
ローカル一時ディレクトリパスとリモート一時ディレクトリパスの値を設定します。
tempDir
を参照してください。
workItemResultServerAddr()
→ str
ワークアイテム結果サーバーのネットワークエンドポイントを<HOST>:<PORT>の書式で返します。
これは、__PDG_RESULT_SERVER__
コマンドトークンや$PDG_RESULT_SERVERジョブ環境変数と等価です。
通常では、これがXMLRPC APIサーバーになります。
setWorkItemResultServerAddr(addr)
→ None
workItemResultServerAddr
が返す値を設定します。
startService(service)
→ bool
PDG Service Managerは、このメソッドをコールして、このスケジューラが使用するサービスを起動します。 このスケジューラは、PDGサービスに対応させる場合には必ずこのメソッドの実装を用意しなければなりません。
このメソッドは、成功すればTrue
、失敗すればFalse
を返します。
stopService(service)
→ bool
PDG Service Managerは、このメソッドをコールして、このスケジューラで起動されたサービスを停止します。 このスケジューラは、PDGサービスに対応させる場合には必ずこのメソッドの実装を用意しなければなりません。
このメソッドは、成功すればTrue
、失敗すればFalse
を返します。
workItemDataSource
: pdg.workItemDataSource
Property
このスケジューラのpdg.workItemDataSource設定で、ワークアイテムデータをリモートワーカーマシンに転送する方法を決めます。