加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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";   
});

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读