+ -
当前位置:首页 → 问答吧 → perl里的多线程问题??

perl里的多线程问题??

时间:2010-08-21

来源:互联网

部分代码如下:
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个小时都没有结果,所以想改用多线程,但是我发现用多线程,速度还是很慢,到现在还是没出结果。所以想请教各位大虾,是不是我写的代码有问题,还是说不应该用多线程,而要用到进程。如果是用多进程,又该怎么写呢?

作者: huangfei777528   发布时间: 2010-08-21

有多少个核或者CPU?

作者: 黑色阳光_cu   发布时间: 2010-08-21