我想将
LSF command
bsub
的作业限制编入我的Perl脚本中,该脚本启动LSF作业.如果我有2000个工作岗位,我想在任何时候最多运行20个工作岗位.我已经看过脚本可以启动20个工作,然后等待它们全部完成再启动另外20个工作.
解决方法
几个现有的Perl模块,包括
Parallel::ForkManager
和
Forks::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; }
在福克斯::超级
use Forks::Super MAX_PROC => 20; foreach $job (@jobsToRun) { fork { cmd => "bsub -K $job" }; }