NodeJS:这个代码是否会运行多核?

我使用这个节点脚本作为我的项目的“跑步者”(需要同时启动/停止三个脚本)。 现在我想知道是否从节点进程中产生的child_process将会使用或不使用我的服务器可能拥有的多核(我对“是”有90%的自信,但是比对不起更安全)。

var CP = require("child_process") , children = [ 'server1', 'server2', 'server3' ] , child children.forEach(function(name) { child = CP.spawn("node", [name] ) child.stdout.on('data', function (data) { process.stdout.write(data.toString()); }) child.stderr.on('data', function (data) { process.stdout.write(data.toString()); }) } }); 

操作系统是Ubuntu Linux。

对。 spawn()在操作系统级创build全新的进程。

你甚至可以通过使用pipe()来简化它:

 var spawn = require("child_process").spawn , children = [ 'server1', 'server2', 'server3' ] , child children.forEach(function(name) { child = spawn("node", [name] ) child.stdout.pipe(process.stdout); child.stderr.pipe(process.stderr); // Catch errors (dies quite hard on first child with non-zero exit code...) child.on('exit', function (code) { if(code !== 0) { process.exit(code); } }); }); 

(在exit也添加了监听器,所以它至less会以某种方式传播错误,如果你想做的事情,你可能需要跟踪它们直到最后一个过程完成,然后调用process.exit()与最大或最小的代码…)

这绝对会利用多个核心。 节点不会也不应该将subprocess绑定到特定的CPU或CPU内核。