gpt4 book ai didi

multithreading - 控制 Fork super 队列的长度

转载 作者:行者123 更新时间:2023-12-03 13:04:57 25 4
gpt4 key购买 nike

继续我的上一个问题 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 , 3 等待 2 , 2 等待 1 。

问题:我如何在一开始就建立整个队列?

最佳答案

设置 $Forks::Super::ON_BUSYqueue或使用类似的模块

use Forks::Super ON_BUSY => 'queue';

默认设置为 block ,这将在您第一次设置具有依赖项的作业时停止执行。

也许 queue应该是默认值,或者至少它应该是具有依赖关系的作业的默认值。

关于multithreading - 控制 Fork super 队列的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20415186/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com