我有一个perl脚本,可以生成60个子进程。我得到一个“内存不足错误”,没有其他额外的错误消息,以了解它的原因。它表示什么?是因为我有60个子进程同时在系统中运行我得到一个内存不足的错误。我在这个过程中没有大数组或哈希映射,所以不应该有内存问题。子进程只是greps文件。 Solaris 10是操作系统。
答案 0 :(得分:3)
某些系统有64个子限制。我想你找到了一个。收获那些已经完成产生更多的东西。
答案 1 :(得分:0)
我相信60个过程叉对于任何系统来说都太过分了。
你绝对确定你需要所有这些吗?尽管fork()
经常被用作 parallelization 的同义词,但应谨慎使用。
例如,大多数“慢速任务”都受I / O限制,可以通过非阻塞异步调用进行并行化(请参阅AnyEvent和Coro)。
即使是CPU绑定任务也很棘手:除非你有64核SMP机器,否则不要指望60个子进程的速度提高60倍。
此外,这是Perl并发编程的一个很好的比较图表:http://blog.64p.org/entries/2009/06/30
答案 2 :(得分:0)
您可以使用Parallel::ForkManager这样的库来保持同时进程的数量达到某种限制。