我正在使用此节点脚本作为我的项目的“跑步者”(需要同时启动/停止三个脚本)。现在我想知道从节点进程内部生成的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。
答案 0 :(得分:6)
烨。 spawn()
在操作系统级别创建全新的进程。
你甚至可以使用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
添加了监听器,所以它至少会以某种方式传播错误。如果你想做什么,你可能想要跟踪它们直到最后一个进程完成,并且然后使用最大或最小的代码调用process.exit()
...)
答案 1 :(得分:0)
这绝对会使用多个核心。 Node不会,也绝不应该将子进程绑定到特定的CPU或CPU核心。