聚类循环混乱

Clustering Loop Confusion

我使用 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. 您正在分叉 os.cpus().length 单独的 进程。因此,如果 os.cpus().length === 6,那么您应该会看到 6 个单独的输出(您发布的输出就是这种情况)。
  2. 不,事情不是这样的。每个进程都将安排在一个单独的核心上。这不是关于 运行 它更快,而是能够在 并行 .
  3. 中进行 更多 处理