Je souhaite analyser un fichier de 8 Go pour trouver des informations. Cela me prend plus de 4 heures pour finir. Je suis passé par Perl Parallel :: ForkManager module pour cela. Mais cela ne fait pas beaucoup de différence. Quelle est la meilleure façon de mettre en œuvre cela?Calcul parallèle en Perl
Ce qui suit est la partie du code utilisée pour analyser ce fichier Jumbo. J'ai en fait une liste de domaines dans lesquels je dois regarder dans un fichier de zone de 8 Go et savoir avec quelle compagnie il est hébergé.
unless(open(FH, $file)) {
print $LOG "Can't open '$file' $!";
die "Can't open '$file' $!";
}
### Reading Zone file : $file
DOMAIN: while(my $line = <FH>){
#domain and the dns with whom he currently hosted
my($domain, undef, $new_host) = split(/\s|\t/, $line);
next if $seen{$domain};
$seen{$domain} =1;
$domain.=".$domain_type";
$domain = lc ($domain);
#already in?
if($moved_domains->{$domain}){
#Get the next domain if this on the same host, there is nothing to record
if($new_host eq $moved_domains->{$domain}->{PointingHost}){
next DOMAIN;
}
#movedout
else{
@INSERTS = ($domain, $data_date, $new_host, $moved_domains->{$domain}->{Host});
log_this($data_date, $populate, @INSERTS);
}
delete $moved_domains->{$domain};
}
#new to MovedDomain
else{
#is this any of our interested HOSTS
my ($interested) = grep{$new_host =~/\b$_\b/i} keys %HOST;
#if not any of our interested DNS, NEXT!
next DOMAIN if not $interested;
@INSERTS = ($domain, $data_date, $new_host, $HOST{$interested});
log_this($data_date, $populate, @INSERTS);
}
next DOMAIN;
}
Post le code que vous utilisez avec Parallel :: ForkManager. – Ether
Code postal (et peut-être des données d'échantillon). il y a des chances que cela n'ait rien à voir avec le traitement parallèle. Je suis également curieux de savoir pourquoi cette 8G de données n'est pas dans une base de données. – xenoterracide