J'ai un script qui utilise Parallel::ForkManager
. Cependant, le processus wait_all_children() prend un temps incroyablement long même après que tous les processus fils soient terminés. La façon dont je sais est en imprimant des timestamps (voir ci-dessous). Est-ce que quelqu'un a une idée de ce qui pourrait causer cela (j'ai 16 cœurs de processeur sur ma machine)?Perl Parallel :: ForkManager wait_all_children() prend trop de temps
my $pm = Parallel::ForkManager->new(16);
for my $i (1..16) {
$pm->start($i) and next;
... do something within the child-process ...
print (scalar localtime), " Process $i completed.\n";
$pm->finish();
}
print (scalar localtime), " Waiting for some child process to finish.\n";
$pm->wait_all_children();
print (scalar localtime), " All processes finished.\n";
De toute évidence, je reçois le message Waiting for some child process to finish
d'abord, avec un horodatage, disons, 7:08:35
. Ensuite, je vais obtenir une liste de Process i completed
messages, avec le dernier à 7:10:30
. Cependant, je ne reçois pas le message All Processes finished
jusqu'à 7:16:33
(!). Pourquoi ce délai de 6 minutes entre 7h10 et 7h16? THX!
Est-ce le code que vous utilisez? Il y a une erreur de syntaxe pas si subtile. –
Correction de cette erreur. – Zhang18