gpt4 book ai didi

Perl - 负责 fork

转载 作者:行者123 更新时间:2023-12-04 13:53:35 25 4
gpt4 key购买 nike

我新发现了 Perl fork ,我非常喜欢。但有一件事让我担心——如果我只是左右分离进程,这肯定会在某个地方引起一些问题。是否应该使用一种合理的检查来确保我的小应用程序不会占用我机器的所有资源?

拿这个示例代码:

foreach my $command (@commands) {
my $pid = fork();
if (!$defined $pid) {
#Fork failed. Do something.
} elsif ($pid == 0) { #This is the child.
system($command);
exit(0)
}
}

while (wait() != -1) {} #wait() will be -1 when the last child exits.

所以这将正常工作,并产生一个处理每个命令的进程。这一切都将并行发生,如果这些命令完全独立,那就太好了。

如果我突然要运行 5,000 多个命令怎么办?不加思索地 fork 那么多进程是不明智的。那么应该实现什么样的检查,以及如何实现呢?

)

最佳答案

此外,如果您担心同时产生太多 fork 进程,您可以限制它们。

自己滚动(使用队列来保存“ fork ”),或者更好的是,使用 Parallel::ForkManager 允许您通过构造函数参数限制同时 fork 的模块。

use Parallel::ForkManager;
$pm = new Parallel::ForkManager($MAX_PROCESSES);

请注意,ForkManager 还将通过提供的“等待*”API 为您处理已结束的子进程

关于Perl - 负责 fork ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9207100/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com