0

この問題の解決策を探してみましたが、コマンド Shell=True があるため (これは私がやっていることとは関係ないと思いますが、間違っている可能性があります)、一見役に立たないヒットがたくさんあります。 .

わかりましたので、問題は基本的に次のとおりです。

クラスターで Python スクリプトを実行しています。クラスターで行う通常のことは、すべてのコードなどを起動することです。ジョブの実行に必要な適切なリソース (最大実行時間、ノード、ノードあたりのプロセッサなど) を要求するために使用されるシェル スクリプトを介して。次に、このシェルはスクリプトを呼び出し、終了します。

これは問題ではありませんが、私が抱えている問題は、続行する前に、「親」コードが「子」が完全に実行される (そして親が使用するデータを生成する) まで待機する必要があることです。これは、シェルとスクリプトの間にシェルがない場合は問題ありませんが、現状では、シェル スクリプトが完了すると .communicate() と .wait() は「満足」します。シェルによって呼び出されたスクリプトが完了するまで待つ必要があります。

壊れる前に特定のファイルが存在する必要がある while ループを挿入することで失敗する可能性がありますが、これは面倒に思えます。

だから私の質問は、.communicate (理想的) または .wait または他の (クリーン/ナイス) メソッドを介して、シェルとシェルによって呼び出されるすべてが実行を終了するまで親コードを一時停止する方法はありますか? 理想的には (ほぼ必須事項ですが)、これは親コードだけで行うことです。

私はこれをうまく説明していないかもしれませんので、必要に応じて詳細を提供できることを嬉しく思います。

4

0 に答える 0