Paratask is a tool that will execute your code in parallel using the full potential of multi-process programming. In contrast to asynchronous task management, Paratask will create a child Node/io.js process in which your task function will 'live'.
Note: Scope dependency injection is at your service. More into in the examples below.
Note: This modules uses ES5 "callback" style. If you're more into the Promises/A+ standard you can use paratask-promises
You can install Paratask with the Node Package Manager:
npm install paratask
or by getting it from this repo.
Paratask uses only native Node/io.js modules that do not need additional installation:
task_2 will fork a new Node/io.js process and will run concurrently.
When both call
callback(), the final results will be printed in the console.
scope property is your dependency injector. Can only be a valid
JSON.parse() value (i.e. no functions allowed).
var paratask = require'paratask';var task_1 =// Some calculation using the 'count' scope varvar result = count * 10;callbacknull result;scope:count: 10;var task_2 =// Some calculation using the 'count' scope varvar result = count * 10;callbacknull result;scope:count: 20;paratask task_1 task_2console.log error ; // nullconsole.log results ; // [100, 200], 1st task result will be always the 1st in the results array even if completed last;
task_2 will fork a new process but
both processes will be killed and the final callback will be executed.
scope property is optional.
var paratask = require'paratask';var task_1 =var count = 1000000000;var factorial = 1;while --count factorial *= count;callbacknull factorial;;var task_2 =callback'Error message';;paratask task_1 task_2console.log error ; // 'Error message'console.log results ; // , the results array may not have any data saved since one task error will kill all forked tasks;
A palette of comparison tests between
process.nextTick() are available in
Paratask is great when you have several time consuming task functions with few external dependencies. In such cases, multi-processing is the best approach. When you want to manage several relevantly quick functions with asynchronous logic, async will handle it with beauty.