私は次のコードを持っています:
find(&jpegCompress, @search_paths);
sub jpegCompress()
{
#do processing
}
現在、各ファイルを1つずつ確認します直列で、これは非常に遅いです。とにかくjpegCompress関数でスレッドを作成し(スレッドカウントが<maxThreadsの場合)、find関数にすばやく戻る方法はありますか?
回答:
回答№1は2ザ Parallel :: ForkManager モジュールは単純な並列処理を提供します。例:
use Parallel::ForkManager;
$pm = new Parallel::ForkManager($MAX_PROCESSES);
foreach $file (@jpeg_files) {
# Forks and returns the pid for the child:
my $pid = $pm->start and next;
jpegCompress($file);
$pm->finish; # Terminates the child process
}