jpegファイルとpngファイルを可逆圧縮するbashスクリプトを作成しているので、Ubuntuでjpegoptimとoptipngという名前の2つのパッケージを使用します。Aは、 2つまたは4つのコアプロセッサでスクリプトを使用します。CPUの全容量を使いたいのですが。
問題は、optipngがデフォルトでマルチスレッドをサポートしていないことです(1つのCPUコアのみを使用します)。そのため、画像をより高速に圧縮するために2つまたは4つの並列プロセスを起動することにしました。私はすでに画像ファイルを(ピクセル数に基づいて)4つのほぼ等しい配列にソートしました。次に、並列化されたプロセスを実行する必要があります。
コマンドの最後にある文字を使用してプロセスを並列化しようとしていますが、並列処理&
が実行されません。
optipngout=$(optipng -$pnglevel -dir $outdir ${threaddata_1[@]} &)
optipngout=$(optipng -$pnglevel -dir $outdir ${threaddata_2[@]} &)
optipngout=$(optipng -$pnglevel -dir $outdir ${threaddata_3[@]} &)
optipngout=$(optipng -$pnglevel -dir $outdir ${threaddata_4[@]} &)
コマンドの出力をキャッチする必要があるので、問題は$()構造にあると思います。