我有一个使用Parallel::ForkManager
的脚本。但是,即使在所有子进程完成之后,wait_all_children()进程也需要很长时间。我知道的方法是打印出一些时间戳(见下文)。有没有人有任何想法可能会导致这种情况(我的机器上有16个CPU核心)?Perl Parallel :: ForkManager wait_all_children()需要很长时间
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";
很显然,我会先拿到Waiting for some child process to finish
消息,有,比方说,7:08:35
时间戳。然后我会得到一个Process i completed
消息的列表,最后一个在7:10:30
。但是,我没有收到All Processes finished
的消息,直到7:16:33
(!)。为什么7点到10点和7点16分33秒之间有6分钟的延迟?谢谢!
这是你正在运行的代码?有一个不那么微妙的语法错误。 – 2010-03-11 21:42:44
更正了该错误。 – Zhang18 2010-05-21 14:49:18