3

私はpythonラッパースクリプトを作成していますが、それを作成する良い方法は何だろうと思っていました.

コードを連続して実行したい。例えば:

ステップ 1. 同じプログラムを実行します (並列 - 並列化は簡単です。なぜなら、私は LSF システムで作業しているので、3 つの異なるジョブをサブミットするだけだからです)。

プログラムを並行して実行すると、実行ごとに 1 つの fin.txt が取り込まれ、1 つの fout.txt が出力されます。つまり、すべて実行すると、3 つの入力ファイル f1in.txt、f2in.txt、f3in から 3 つの出力ファイルが生成されます。 txt、f1out.txt、f2out.txt、f3out.txt。

(LSF システムで) プログラムの各実行が正常に完了すると、ログ ファイル出力 f1log.out、f2log.out、f3log.out が生成されます。

ログ ファイルの出力はこの形式です。つまり、正常に実行された場合、f1log.out は次のようになります。

------------------------------------------------------------
# LSBATCH: User input
------------------------------------------------------------

Successfully completed.

Resource usage summary:

    CPU time   :     86.20 sec.
    Max Memory :       103 MB
    Max Swap   :       881 MB

    Max Processes  :         4
    Max Threads    :         5

The output (if any) is above this job summary.

したがって、ログファイルが作成されているかどうかを各実行(1、2、3)で(5分ごとに)チェックするラッパーが必要です。ログファイルが作成されている場合は、ラッパーが正常に完了しました (ログ ファイルに正常に完了した文字列が表示された場合)。

また、実行の 1 つが完了し、正常に完了しなかったログ ファイルが生成された場合、ラッパーを終了して、実行 (k=1,2,3) が完了しなかったことを報告します。

その後、

ステップ2。3 回の実行がすべて正常に完了した場合は、これら 3 つのファイルを入力として受け取る別のプログラムを実行します。それ以外の場合は、エラーを出力します。

基本的に私の質問では、次の 2 つのことを探しています。

ラッパーを書く良い方法のように思えますか?

どのようにPythonでファイルの存在を確認し、一定時間ごとにパターンを良い方法で検索できますか?

ノート。LSF にはジョブの依存関係があることは承知していますが、最適ではないかもしれませんが、この方法の方が明確で使いやすいと思います。

4

1 に答える 1

1

私は LSF システムのユーザーで、主な不満は終了処理とクリーンアップです。たとえば、初期化タスク、レッグワーク タスク、クリーンアップ タスクなどを含むバッチ ジョブ配列を送信するのが良いアイデアだと思います。LSF は 3 つすべてを完了し、待機中のヘッド ノードにリターン コードを送信できます。多くの場合、LSF は 1 つのジョブまたはコマンドを送信するのにはうまく機能しますが、実際には体系的な処理を処理するようには設定されていません。

それ以外は、あなたの幸運を祈ります:)

于 2013-05-02T13:38:50.493 に答える