Fork List
It's easy to fork a list of child process for node.js by ForkList.
Install
npm install fork-list
Quick Examples
var ForkList = ; // which script to run by multiprocessvar path = './script/write'; // child process numvar num = 3; var forks = path: path num: num; for var i = 0; i < 10; i++ forks; forks;
the ./script/write.js
is:
var Forks = ; Forks;
Output:
Work id: 1 recv data1: hello~ data2: 1
Work id: 2 recv data1: hello~ data2: 0
Work id: 0 recv data1: hello~ data2: 5
Work id: 1 recv data1: hello~ data2: 2
Work id: 2 recv data1: hello~ data2: 3
Work id: 1 recv data1: hello~ data2: 9
Work id: 2 recv data1: hello~ data2: 4
Work id: 0 recv data1: hello~ data2: 6
Work id: 2 recv data1: hello~ data2: 7
Work id: 2 recv data1: hello~ data2: 8
Documentation
Initialization
Transfer
Control
Event ## Initialization ### new(path)
fork a new process with specify path.
### count()get total number of processes.
### setClassifier(classifier)set special classifier.
### setLogger(logger)enable or disable fork-list debug log, or set your special logger such as log4js.getLogger.
Example
var ForkList = ;var underscore = ; var times = 10;var forks = ; forks;forks; forks; for var i = 0; i < times; i++ forks; forks;
var forkList = ; // which script to run by multiprocessvar path = './test'; // child process numvar num = 2; var forks = path: path num: num; // send data to child processforks;
The usual data include:
- Number
- String
- Array
- JSON
- Object*
Caution The Object data wouldn't complete delivery:
var forks = path: path; { thisname = name || 'default';} testprototype { console;}; for var i = 0; i < times; i++ var t = 'Alan' + i; forks;
you can only get the basic data { name: 'AlanX' }
, and the prototype will lost, you can't call .hi
in the child process.
Socket forward exmaple
server.js
var net = ;var config = ;var ForkList = ; var num = 2;var path = './worker'; var wokers = path: path num: num; var server = net; server; server; console;
worker.js
var ForkList = ; ForkList;
test client.js
var config = ;var net = ; var client = net; client; client;
var forkList = ; forkList;
This will forcely kill special child process, and don't care if there are some jobs haven't done.
### killByPid(pid)This will forcely kill special child process, and don't care if there are some jobs haven't done.
### shutdown()This will forcely shutdown all child process, and don't care if there are some jobs haven't done. and once all of child process has exited, the finish
event will emit.
Example:
var ForkList = ; var path = './script';var num = 3; var forks = path: path num: num log: true; for var i = 10; i >= 0; i-- forks;; forks; forks; forks; forks;
script.js
var Forks = ; Forks;
Output:
Work id: 0 recv data1: hello 10
Work id: 0 recv data1: hello 8
Work id: 0 recv data1: hello 7
Work id: 2 recv data1: hello 9
Work id: 0 recv data1: hello 6
Work id: 1 recv data1: hello 5
Work id: 0 recv data1: hello 2
Work id: 0 recv data1: hello 0
Work id: 1 recv data1: hello 4
Work id: 1 recv data1: hello 3
Work id: 1 recv data1: hello 1
--> Child process exit, pid: 15064
--> Error: IPC channel is already disconnected pid: 15064
--> Child process exit, pid: 13072
--> Error: IPC channel is already disconnected pid: 13072
--> Child process exit, pid: 4900
--> Error: IPC channel is already disconnected pid: 4900
--> All of child process has exited
Test
you can test this module by:
cd node_modules/fork-listnpm test
license
MIT