2014-09-25 45 views
-1

我启动的Perl forkmanager限制为4个进程,但启动更像8个进程。那么我怎样才能控制多少个进程开始? (我想前4完成,然后开始另外4个这样的):我的代码看起来像这样Perl叉管理器

opendir($par_dir,$parent); 

while(my $sub_folders = readdir($par_dir)){ 
    if ($sub_folders =~ /^..?$/){next;} 
    my $path = $parent. '/'.$sub_folders; 
    next unless (-d $path); 
    opendir ($sub_dir,$path); 

    while (my $file =readdir($sub_dir)){ 

    next unless $file =~ /\.bai?$/i; 

    my $destdir = $outdir; 

    $pm-> start() and next; 
    $pm->set_max_procs(MAX_CHILDREN); 
    mkdir($destdir, 0777); 
    system("do something with the $file); 

    } 
    $pm ->finish(); 
    closedir($sub_dir); 

} 
$pm->wait_all_children; 

回答

0

是否使用Parallel::ForkManager?如果你给你正在使用的软件包提供一个链接(CPAN上的固定链接很好),它会有所帮助。很多人不会遇到它,因为它只是CPAN上的25,000个软件包中的一个。

注意,大纲并行:: ForkManager说:

use Parallel::ForkManager; 

$pm = Parallel::ForkManager->new($MAX_PROCESSES); 

那么,你指定4作为参数,当你创建你的$pm处理?