samsungsamsung 发表于 2018-8-31 06:40:14

Perl多线程生成一些数据

  usethreads;
  #所用模块:threads
  #模块中的方法:threads->create(),创建一个新线程;
  #threads->join(),收割已经创建的线程;
  #threads->list(threads::all),返回所有已经创建的线程;
  #threads->is_joinable(),返回目标线程是否已经完成,等待join;
  #得到随机数
  subGetRandomNum
  {
  my$Max=@_;
  returnint(rand($Max));
  }
  subGetRandomString
  {
  my$AlapContent=shift;
  my$Num=shift;
  my$RandomString=@$AlapContent[&GetRandomNum(@$AlapContent)].@$AlapContent[&GetRandomNum(@$AlapContent)].
  @$AlapContent[&GetRandomNum(@$AlapContent)].@$AlapContent[&GetRandomNum(@$AlapContent)].&GetRandomNum(@$Num);
  #print"stringis$RandomString\n";
  return$RandomString;
  }
  #写入文件
  subWriteFileContent
  {
  my($FileName,@logitem)=@_;
  open(logfile,">$FileName")||die"can'topenfile$&!";
  printlogfile"@logitem\n";
  close(logfile);
  }
  subGenerateRandomFile()
  {
  my$FileLine=shift;
  my$File=shift;
  my@RandContent;
  my@AlapContent=(a..z,A..Z);
  my@Num=(1..100);
  foreach$Line(1..$FileLine)
  {
  $RandomLine=&GetRandomString(\@AlapContent,\@Num);
  push@RandContent,$RandomLine."\n";
  }
  my$FileName="./Save/".$File."\.txt";
  &WriteFileContent($FileName,@RandContent);
  }
  my$SaveFile="./Save";
  unless(-d$SaveFile)
  {
  mkdir$SaveFile;
  }
  print"PleaseInputtheFileNum,youwanttoGenerate\n";
  my$FileNum=;
  chomp($FileNum);
  print"PleaseInputEachLinenuminthefile\n";
  my$FileLine=;
  chomp($FileLine);
  my$RandomLine;
  print"BeginingGenerateFile......\n";
  my$max_thread=20;
  my@thread_array;
  foreach$File(1..$FileNum)
  {
  if($File%100==0)
  {
  print"The$Filefilecomplete\n";
  }
  if($current_thread>=$max_thread)
  {
  #遍历所有的线程
  foreachmy$thread(@thread_array)
  {
  #判断线程是否运行完毕
  if($thread->is_joinable())
  {
  #释放该线程
  $thread->join();
  }
  }
  $current_thread=0;
  }
  #创建线程
  $thread_array[$current_thread]=threads->new(\&GenerateRandomFile,$FileLine,$File);
  $current_thread++;
  }
  print"FinishtheWork,Pressanykeyexit......\n";
  my$Input=;

页: [1]
查看完整版本: Perl多线程生成一些数据