免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3436 | 回复: 2
打印 上一主题 下一主题

Parallel::ForkManager 的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-04-28 17:28 |只看该作者 |倒序浏览
各位好
    今天在用模块Parallel::ForkManager进行测试时出现了一个问题。

测试内容
    从一个有20200记录的数据库表读出数据,并将数据写入一个文件 。
问题
    Parallel::ForkManager( 10)和Parallel::ForkManager( 40); 的耗时基本一致

代码如下:
use strict;
use warnings;
use Parallel::ForkManager;
use LWP::Simple;
use DBI;

##----------返回数据库连接句柄----------
sub GetDBConnect()
{
  my ($db_name,$db_user,$db_pwd,$db_type,$db_srv,$db_port) = @_;
  my $dbh;
  my $con_type;
  
  $db_type=lc($db_type);
  if(not defined($db_type)){
    $con_type = "Oracle";
  }elsif($db_type eq 'mssql'){
    $con_type = "ODBC";
  }elsif($db_type eq 'sybase'){
    $con_type = "Sybase";
  }elsif($db_type eq 'oracle'){
    $con_type = "Oracle";
  }elsif($db_type eq 'odbc'){
    $con_type = "ODBC";
  }
  
  if ($db_type eq ''){
          $db_type="Oracle";
  }
  
  my $conStr = "dbi:"."$con_type"."db_name";
  DBI->trace(0);
  if ($db_type eq 'sybase'){
          $dbh = DBI->connect("dbicon_type:host=$db_srv;port=$db_port;database=$db_name",$db_user,$db_pwd,{ AutoCommit => 1, PrintError => 1, RaiseError => 0 }) or return 999901;
  }else{
    $dbh = DBI->connect("$conStr",$db_user,$db_pwd,{ AutoCommit => 1, PrintError => 1, RaiseError => 0 } )  or return 999901;
  }
  
  return $dbh;
}

my $sql_str=qq(select BZ,ZHEN,CUN,PC,SFZ,NSFZ from match_20120428 );

my $dbh=&GetDBConnect('orcl','schdl_user','schdl_user','oracle','127.0.0.1','1521');

my $sth=$dbh->prepare($sql_str);
   $sth->execute() ;

my $max_process = 40;#####一开始用10,写入文件耗时8分多点,改成40之后,耗时依然是8分多点
my $pm = new Parallel::ForkManager( $max_process );

open TXT,">45.txt" ;
while (my @ref = $sth->fetchrow_array()){
        chomp (@ref);
              $pm->start and next;
        print TXT $ref[0].":".$ref[1].":".$ref[2].":".$ref[3].":".$ref[4].":".$ref[5]."\n" ;
        $pm->finish;
}
close(TXT);
$pm->wait_all_children; ###
print "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n" ;



各位大拿给个指点 。
谢谢

论坛徽章:
78
双子座
日期:2013-10-15 08:50:09天秤座
日期:2013-10-16 18:02:08白羊座
日期:2013-10-18 13:35:33天蝎座
日期:2013-10-18 13:37:06狮子座
日期:2013-10-18 13:40:31双子座
日期:2013-10-22 13:58:42戌狗
日期:2013-10-22 18:50:04CU十二周年纪念徽章
日期:2013-10-24 15:41:34巨蟹座
日期:2013-10-24 17:14:56处女座
日期:2013-10-24 17:15:30双子座
日期:2013-10-25 13:49:39午马
日期:2013-10-28 15:02:15
2 [报告]
发表于 2012-04-28 17:41 |只看该作者
print的时间太短了,用不用fork没区别

论坛徽章:
0
3 [报告]
发表于 2012-04-28 18:06 |只看该作者
回复 2# yybmsrs
哦 谢谢

   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP