7

我想将LSF 命令 bsub的作业限制编程到我的 Perl 脚本中,该脚本在后台启动 LSF 作业。如果我有 2000 个工作,我希望在任何给定时间最多运行 20 个工作。我见过启动 20 个作业的脚本,然后等待它们全部完成,然后再启动另外 20 个。

4

1 回答 1

12

几个现有的 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;
}


在 Forks::Super 中

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


于 2010-09-23T18:09:31.883 回答