如何在Perl中同时从大队列中运行多个作业?

Gor*_*don 7 unix perl lsf

我想将LSF命令的 作业限制编程bsub到我的Perl脚本中,该脚本启动LSF作业.如果我有2000个工作岗位,我想在任何时候最多运行20个工作岗位.我已经看过脚本可以启动20个工作,然后在启动另外20个工作之前等待它们全部完成.

mob*_*mob 11

几个现有的Perl模块,包括Parallel::ForkManagerForks::Super(我是作者)都提供此功能.

还有一个LSF::JobManager我不知道的模块.


Parallel :: ForkManager骨架

use Parallel::ForkManager;
$pm = new Parallel::ForkManager(20);
foreach $job (@jobsToRun) {
    $pm->start and next;
    system("bsub -K $job");  # bsub -K job  to wait until job finishes, right?
    $pm->finish;
}
Run Code Online (Sandbox Code Playgroud)


在福克斯::超级

use Forks::Super MAX_PROC => 20;
foreach $job (@jobsToRun) {
    fork { cmd => "bsub -K $job" };
}
Run Code Online (Sandbox Code Playgroud)