是否有可能分叉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
来计算重的数据)。