私がやりたいことは、リリースロックを待つことです。 (私は4コアを持っているので)、私は例4のために持っているbashで同期プログラムを開始
各スクリプトは、そのように見えるプロジェクトの一部にそれぞれの作品の同一スクリプト:
#!/bin/bash
./prerenderscript $1
scriptsync step1 4
./renderscript $1
scriptsync step2 4
./postprod $1
私は4を呼び出すメインスクリプトを実行します私は各スクリプトを個別に動作させたいが、ある時点では、次の部分は最初の部分のすべてのデータが必要であるため、各スクリプトをお互いに待たせたい。
今のところ私は、プロセスごとに作成されるファイルまたはファイルの数、およびそれらの存在が他のものとテストされるようないくつかのロジックを使用しました。
私はまた、メイクファイルを使用すると
prerender%: source
./prerender [email protected]
renderscript%: prerender1 prerender2 prerender3 prerender4
./renderscript [email protected]
postprod: renderscript1 renderscript2 renderscript3 renderscript4
./postprod [email protected]
を持つようにアイデアを得た。しかし、実際のプロセスがここに簡素化されたスクリプトは、より複雑で、ステップごとにスレッドが彼の変数を維持する必要があります。
プレースホルダーコマンドのscriptsyncではなく、スクリプトを同期させるための方法はありますか。
私はラッパーとしてpythonスクリプトを使用し、 'threading'で動作します。このようにして、私はシェルスクリプトを再利用することができ、pythons 'threading'やその他の機能を利用することができます。 –
@ansi_lumen: 'threading'は、GILのために' python'には必ずしも適切ではなく、作業負荷に依存します。 @ cdarke。 – cdarke
真実。スレッド化がうまく拡張できない場合、 'multiprocessing'を使用して実際の処理を行うことができます。主なアイデアは、 'bash'よりも便利なスレッド/フォークを扱う環境を使うことでした。 –