Perl如何在并行处理中共享全局变量?

前端之家收集整理的这篇文章主要介绍了Perl如何在并行处理中共享全局变量?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
use Parallel::ForkManager;
  use LWP::Simple;
  my $pm=new Parallel::ForkManager(10);
  our $a =0;
 @LINK=( 10,203,20,10,101,01,10 ) ;
  for my $link (@LINK) {
    $pm->start and next;
    my $lo = ($link * 120.22 )*12121.2121212121212121*( 12121212.1212121+ $link);
    $a = $a+ $lo ;   
    print $a."\n" ; 
    $pm->finish;
  };

  print $a ;

我试图使用并行fork Manager模块访问并行进程上的全局变量.程序结束时全局变量仍然保持不变..如何实现这一目标?是否有可能?

解决方法

如果程序没有启动并行进程,则问题将出现在第二个进程中

my $a = 0;

线.

但是,因为您正在启动并行进程,所以每个$a将在其内存空间中.这意味着每个$a是第一个$a的副本.由于这个原因,最后一个$a永远不会改变.

从一个进程获取值到另一个进程需要进行一些进程间通信.这可以通过套接字或IPC或其他一些机制来完成.

猜你在找的Perl相关文章