我正在寻找与Python的
相当的Perlfrom multiprocessing import Pool
...
if __name__=='__main__':
pool = Pool(processes =2)
pool.map(Job,DATA)
为了从28的列表中一次运行8个shell命令,但我不想使用整个机器并伤害同事的工作。我找到了perl的
use Thread::Queue;
和
use Parallel::ForkManager;
和
use Forks::Super;
但我对使用外部库/包/模块非常犹豫,因为我过去曾经遇到过糟糕的经历。我也很难从这些软件包中获得最少的工作示例。
有人可以提供一个标准(没有外部库/包/模块)的方式在C或Perl中进行python的池处理而不调用外部库吗?
-DC
答案 0 :(得分:1)
Forks::Super
作者:
use Forks::Super MAX_PROC => 8;
sub Job { ... } # function to perform task
my @DATA = (...); # details about 28 tasks to perform
foreach my $task (@DATA) {
fork { cmd => 'Job', args => $task };
}
waitall;
答案 1 :(得分:1)
use Parallel::ForkManager qw( );
my $pm = Parallel::ForkManager->new(8);
for my $cmd (@cmds) {
$pm->start and next;
exec($cmd)
or die;
}