在python中我们可以使用多处理模块.如果在Perl和Ruby中有类似的库,你会教它吗?如果你能包括一个简短的样本,我将不胜感激.
Sas*_*gov 12
红宝石:
Perl的:
此外,Perl的线程是本机操作系统线程,因此您可以使用它们来利用多个内核.
使用Perl,您可以选择.一种选择是使用如下的过程.我需要查看如何使用线程编写类似的程序,但http://perldoc.perl.org/perlthrtut.html应该给你一个想法.
#!/usr/bin/perl
use strict;
use warnings;
use Parallel::ForkManager;
my @data = (0 .. 19);
my $pm = Parallel::ForkManager->new(4);
for my $n ( @data ) {
my $pid = $pm->start and next;
warn sprintf "%d^3 = %d\n", $n, slow_cube($n);
$pm->finish;
}
sub slow_cube {
my ($n) = @_;
sleep 1;
return $n * $n * $n;
}
__END__
Run Code Online (Sandbox Code Playgroud)
使用线程的以下版本不会对创建的线程数使用限制(因为我不知道如何):
#!/usr/bin/perl
use strict;
use warnings;
use threads;
my @data = (0 .. 19);
my @threads = map {
threads->new( {context => 'list' }, \&slow_cube, $_ )
} @data;
for my $thr ( @threads ) {
my ( $n, $ncubed ) = $thr->join;
print "$n^3 = $ncubed\n";
}
sub slow_cube {
my ($n) = @_;
sleep 1;
return $n, $n * $n * $n;
}
__END__
Run Code Online (Sandbox Code Playgroud)
有趣的是:
TimeThis : Command Line : t.pl
TimeThis : Elapsed Time : 00:00:01.281
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2428 次 |
最近记录: |