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

Perl多线程生成一些数据

发布时间:2020-12-16 00:08:01 所属栏目:大数据 来源:网络整理
导读:usethreads; #所用模块:threads #模块中的方法:threads-create(),创建一个新线程; #threads-join(),收割已经创建的线程; #threads-list(threads::all),返回所有已经创建的线程; #threads-is_joinable(),返回目标线程是否已经完成,等待join; #得

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$RandomStringn";
return$RandomString;
}

#写入文件

subWriteFileContent
{
my($FileName,@logitem)=@_;
open(logfile,">$FileName")||die"can'topenfile$&!";
printlogfile"@logitemn";
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,youwanttoGeneraten";
my$FileNum=<STDIN>;
chomp($FileNum);

print"PleaseInputEachLinenuminthefilen";
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$Filefilecompleten";
}

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>;

(编辑:李大同)

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

    推荐文章
      热点阅读