perl – parallel :: forkmanager …如何在退出时传递2个变量
发布时间:2020-12-16 06:16:40 所属栏目:大数据 来源:网络整理
导读:我使用Parallel :: ForkManager将一些变量从子项传递给父项.我能通过$var …我怎么通过更多? (再次感谢Hobbs帮助我做到这一点) use Parallel::ForkManager;my $pm=new Parallel::ForkManager(10); my(@cusips,@bad);$pm-run_on_finish(sub{my($pid,$exit_co
|
我使用Parallel :: ForkManager将一些变量从子项传递给父项.我能通过$var …我怎么通过更多? (再次感谢Hobbs帮助我做到这一点)
use Parallel::ForkManager;
my $pm=new Parallel::ForkManager(10);
my(@cusips,@bad);
$pm->run_on_finish(sub{
my($pid,$exit_code,$ident,$exit_signal,$core_dump,$var,$v)=@_;
print "pid: ".$pid."n";
print " first: ".${$var}."n";
print " second: ".${$v}."n";
});
for(1..3){
$pm->start and next; # do the fork
my $var=rand();
my $v=rand();
$pm->finish(0,$var,$v); # do the exit in the child process
}
$pm->wait_all_children;
解决方法
只可以有一个人 :)
传递数组引用: $pm->finish(0,[ $var,$v ]); 或哈希引用: $pm->finish(0,{ 'var' => $var,'v' => $v });
和: $pm->run_on_finish(sub{
my ($pid,$data)=@_;
print "pid: ".$pid."n";
print " first: ".$data->[0]."n";
print " second: ".$data->[1]."n";
});
要么 $pm->run_on_finish(sub{
my ($pid,$data)=@_;
print "pid: ".$pid."n";
print " first: ".$data->{'var'}."n";
print " second: ".$data->{'v'}."n";
});
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
