私は多くのファイルを処理したいのですが、ここにたくさんのコアがあるので、並行してやりたいです:
for i in *.myfiles; do do_something $i `derived_params $i` other_params; done
Makefile ソリューションは知っていますが、コマンドにはシェルグロビングリストにない引数が必要です。私が見つけたのは:
> function pwait() {
> while [ $(jobs -p | wc -l) -ge $1 ]; do
> sleep 1
> done
> }
>
これを使用するには、ジョブとpwait呼び出しの後に実行するだけで、パラメーターは並列プロセスの数を示します。
> for i in *; do
> do_something $i &
> pwait 10
> done
しかし、これはあまりうまくいきません。たとえば、forループを使用して多くのファイルを変換しましたが、エラーが発生し、ジョブを元に戻せませんでした。
zshメーリングリストに関する議論は今ではとても古いので、私はこれがまだ行われていないと信じられません。それで、あなたはもっと良く知っていますか?
echo "DONE"
。アクティブなジョブが完了する前に実行されたループの後にインジケーターを配置しただけです。=>これにより、仕事が終わっていないと思いました。