聚类循环混乱
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
帮助我 运行 那次测试,难道 运行 那个代码只写一次但执行操作更快吗?
- 您正在分叉
os.cpus().length
单独的 进程。因此,如果 os.cpus().length === 6
,那么您应该会看到 6 个单独的输出(您发布的输出就是这种情况)。
- 不,事情不是这样的。每个进程都将安排在一个单独的核心上。这不是关于 运行 它更快,而是能够在 并行 .
中进行 更多 处理
我使用 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
帮助我 运行 那次测试,难道 运行 那个代码只写一次但执行操作更快吗?
- 您正在分叉
os.cpus().length
单独的 进程。因此,如果os.cpus().length === 6
,那么您应该会看到 6 个单独的输出(您发布的输出就是这种情况)。 - 不,事情不是这样的。每个进程都将安排在一个单独的核心上。这不是关于 运行 它更快,而是能够在 并行 . 中进行 更多 处理