Как я могу изменить свой сценарий Perl для использования нескольких процессоров?

Привет, у меня есть простой сценарий, который берет файл и запускает на нем другой сценарий Perl. Сценарий делает это с каждым файлом изображения в текущей папке. Это работает на машине с 2 четырехъядерными процессорами Xeon, 16 ГБ оперативной памяти, работающей под управлением RedHat Linux.

Первый сценарий work.pl в основном вызывает magicplate.pl передает некоторые параметры и имя файла для обработки magicplate.pl. Обработка каждого изображения Magic Plate занимает около минуты. Поскольку work.pl выполняет одну и ту же функцию более 100 раз и поскольку система имеет несколько процессоров и ядер, я думал о разделении задачи на части, чтобы она могла выполняться несколько раз параллельно. При необходимости я мог разделить изображения по разным папкам. Любая помощь была бы замечательной. Спасибо

Вот что у меня есть:

use strict;
use warnings;


my @initialImages = <*>;

foreach my $file (@initialImages) {

    if($file =~ /.png/){
        print "processing $file...\n";
        my @tmp=split(/\./,$file);
        my $name="";
        for(my $i=0;$i<(@tmp-1);$i++) {
            if($name eq "") { $name = $tmp[$i]; } else { $name=$name.".".$tmp[$i];}
        }

        my $exten=$tmp[(@tmp-1)];
        my $orig=$name.".".$exten;

        system("perl magicPlate.pl -i ".$orig." -min 4 -max 160 -d 1");
     }
}       
6
задан Alos 13 December 2010 в 14:01
поделиться