聚类循环混淆

时间:2015-09-02 01:21:38

标签: node.js cluster-computing

我使用cluster模块的基本设置是:(我有6个核心)

var cluster = require('cluster');
if (cluster.isMaster) {
  var numCPUs = require('os').cpus().length;
  for (var i = 0; i < numCPUs; i++) {
        cluster.fork();
  }
}else{
//Code here
  console.time("Time: ");
  var obj = {'abcdef' : 1, 'qqq' : 13, '19' : [1, 2, 3, 4]};
  for(var i = 0; i < 500000; i++) {
            JSON.parse(JSON.stringify(obj));
    }
  console.timeEnd("Time: ");
}

如果我要进行那项测试。 它将输出:

但是......如果我在cluster.isMaster块内运行相同的精确测试,它将输出:

1)为什么我的代码被执行多次而不是一次?

2)由于我有6 cpu cores帮助我进行测试,不应该只运行一次该代码但是更快地执行操作吗?

1 个答案:

答案 0 :(得分:1)

  1. 您正在分析os.cpus().length 单独的进程。因此,如果os.cpus().length === 6,那么您应该看到6个单独的输出(您发布的输出就是这种情况)。
  2. 不,那不是它的运作方式。每个流程都将安排在一个单独的核心上。它不是要更快地运行它,而是能够在 parallel 中进行更多处理。