是否有可能分叉subprocess,并等待他们在Node / JS返回?

我必须多次做一定的计算。 我想分割多个核心,所以我想使用child_process.fork(),然后传递每个孩子一大块的工作。

这工作正常,除了我的主要过程(fork())继续前进fork()ing并且在孩子完成工作时已经终止。

我真正想要做的是等待孩子们完成继续执行之前。

我找不到在Node中做这个的好方法。 有什么build议?

如果你通过.fork()产生了一个新的V8进程,它会返回一个新的实现通信层的child对象。 例如

 var cp = require( 'child_process' ), proc = cp.fork( '/myfile.js' ); proc.on('message', function( msg ) { // continue whatever you want here }); 

/myfile.js ,当你完成这个工作时,你只需发送一个事件

 process.send({ custom: 'message' }); 

请注意,这种方法的确产生了一个新的V8实例,它消耗了大量的内存。 所以你应该好好想想 也许你甚至不需要这样做,也许有一个更像“节点”解决scheme(使用process.nextTick来计算重的数据)。