我有一個使用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