- 论坛徽章:
- 0
|
部分代码如下:
use Thread;
foreach my $x (0..$#a) {
my $a_1=$a[$x];
my @array;
foreach my $y (0..$#spots) {
my $a_2=$spots[$y];
my $euc=Thread->new(\&Euc,$a,$samples,$a_1,$a_2);
push (@array,$euc);
}
for my $i(0..$#array) {
my $result=$array[$i]->join;
if($min > $result) {
$min=$result;
$b_pair[0]=$a[$x];
$b_pair[1]=$spots[$i];
}
}
}
print $min."\t".$b_pair[0]."\t".$b_pair[1]."\n";
其中Euc是一个函数,想通过循环来得到最小值,及其对应在数组@a,@spots里的值,由于数据量比较大,运行起来比较慢,已经运行了5个小时都没有结果,所以想改用多线程,但是我发现用多线程,速度还是很慢,到现在还是没出结果。所以想请教各位大虾,是不是我写的代码有问题,还是说不应该用多线程,而要用到进程。如果是用多进程,又该怎么写呢? |
|