微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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=<STDIN>;
chomp($FileNum);

print"PleaseInputEachLinenuminthefile\n";
my$FileLine=<STDIN>;
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=<STDIN>;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐