继续我的上一个问题Access element across multiple hash of hash of arrays
我有这段代码,
use Forks::Super;
foreach my $special_type (keys %test_variables) {
my $last_job = undef;
foreach my $test_module (keys %{$test_variables{$special_type}}) {
foreach my $set_of_tests ($test_variables{$special_type}{$test_module}) {
foreach my $test (@$set_of_tests){
print "Starting $test\n";
my $job = fork {
name => "$special_type/$test_module/$test",
cmd => "nosetests -m $special_type/$test_module/$test",
depend_on => $last_job
};
$last_job = "$special_type/$test_module/$test";
print "Queue last job:$last_job \n\n\n\n";
}
}
}
}
但是形成的队列长度似乎固定为1。 所以基本上只有第二个进程等待第一个进程完成。
虽然我曾想象/希望像5这样构建的完整队列等待4,4等待3,等待2和2等待1。
问题:如何在开始时构建整个队列?
答案 0 :(得分:1)
将$Forks::Super::ON_BUSY
设为queue
或使用
use Forks::Super ON_BUSY => 'queue';
默认设置为block
,这将在您第一次设置具有依赖关系的作业时停止执行。
也许queue
应该是默认值,或者至少应该是具有依赖关系的作业的默认值。