ぜんぶなんとかなる

ふしみの雑文

npm cluster

10プロセスの worker さんに、それぞれ素数を見つけてもらうテスト。

var cluster = require('cluster');

if(cluster.isMaster) {
    // 親プロセス
    for(var i = 0; i < 10; i++){
        var worker = cluster.fork();
        worker.on('message', function(msg){
            console.log(msg);
        });
    }
}else{
    // 子プロセス
    var primes = [];
    var num = 1;
    while(num ++){
        var is_prime = true;
        for(var i = 0; i < primes.length; i++){
            if(num % primes[i]){
                is_prime = false;
            }
        }
        // 素数だ
        if(is_prime){
            primes.push(num);
            process.send(num);
        }
    }
}

出力はこんな感じ

2
4
8
16
32
64
128
256
512
1024
2048
4096
8192
16384
32768
2
4
8
16
32
64
128
256
512
1024
2048
4096
8192
16384
32768
65536
2
4
8
16
32
64
128
256
512
1024
2048
65536
2
4
8
16
32
64
128
256
4096
8192
16384
32768
512
1024
2048
4096
8192
16384
32768
131072
131072
65536
65536
2
4
8
16
32
64
128
256
512
1024
2048
131072
131072
262144
262144
4096
8192
16384
32768
262144
65536
262144
131072
2
4
8
16
32
64
128
256
512
1024
2
4
8
16
32
64
128
256
512
1024
2048
4096
8192
16384
32768
2048
524288
4096
8192
65536
2
4
8
16
32
64
128
256
512
1024
2048
4096
8192
16384
32768
16384
2
4
8
16
32
64
128
256
512
1024
2048
32768
2
4
8
16
32
64
128
256
4096
8192
16384
512
1024
2048
4096
32768
8192
16384
32768
65536
262144
524288
131072
65536
65536
524288
131072
65536
524288
131072
131072
131072
262144
262144
262144
262144
524288
262144
524288
524288
524288
524288
524288
1048576
1048576
1048576
1048576
1048576
1048576
1048576
1048576
1048576
1048576
2097152
2097152
2097152
2097152
2097152
2097152
2097152
2097152
2097152
2097152