0.0.7 • Published 6 years ago

easycluster v0.0.7

Weekly downloads
3
License
MIT
Repository
github
Last release
6 years ago

easycluster

A cluster wrapper that makes distributing tasks to workers easy

How to install?

npm i -S easycluster

Which is the wee equivalent of:

npm install --save easycluster

How to use it?

Cluster = require 'easycluster'

do ->
  cluster = new Cluster
    workers: 4
    racing: 2
    jobs: () -> [1..10]
    job: (job) ->
      console.log "Job: #{job}"
      job * 2
  result = await cluster.run()
  console.log "Result: #{result}"

Will output something like:

Job: 3
Job: 4
Job: 9
Job: 10
Job: 1
Job: 2
Job: 5
Job: 6
Job: 7
Job: 8
Result: 6,8,18,20,2,4,10,12,14,16

How does it work?

You give 4 pieces of information: Workers: basically, the number of child processes to create. Racing: Each process then can have "fake" concurrency (Node.js doesn't have threads, but you can have sort of a racing condition) Jobs: A method that will return an array. Each element of this array will be given to a worker. It can be async. Job: A method that receives an element of the array. This method is used by workers.

Then you await run and get results.

Oui, très bien, bravo!

Take a look at the source, I tried to make it very simple, plus, it smells coffee.

Own use cases

I personally use it to analyse some data from a MongoDB. I get a list of items, and for each of these items, I have to do some work with other objects. First try I took a look at my CPU and it was not going crazy, so I thought "Hey, why not do something ???". I ended creating a module. I reduced the time of my algorithm by 4 (yep, 4 CPUs) and my system monitor goes crazy 100% CPU (network too, average 60 MiB/s for few secs, which is fun). Plus, it was the occasion to create an NPM module that looks almost serious. Almost. (Feel my CoffeeScript !11one)

0.0.7

6 years ago

0.0.6

6 years ago

0.0.5

6 years ago

0.0.4

6 years ago

0.0.3

6 years ago

0.0.2

6 years ago

0.0.1

6 years ago