multi-tasks 1.2.2 → 1.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -2
- package/examples/example0/run.js +1 -1
- package/package.json +6 -5
- package/test/splitter.test.js +17 -0
- package/workers/master.js +5 -6
package/README.md
CHANGED
|
@@ -14,7 +14,7 @@ How to use:
|
|
|
14
14
|
let multiTasks = require('multi-tasks').multiTasks;
|
|
15
15
|
//You need to provide the data of all subtasks, multi-tasks will automatically split them and execute them in a multi-threaded manner
|
|
16
16
|
let alltasks = [];
|
|
17
|
-
for(let i=0;i<
|
|
17
|
+
for(let i=0;i<100;i++){
|
|
18
18
|
let task_props = {
|
|
19
19
|
index: i,
|
|
20
20
|
name: `task-${i}`,
|
|
@@ -43,7 +43,7 @@ multiTasks({
|
|
|
43
43
|
processTask,
|
|
44
44
|
multi_task_parent_folder: `C:/tmp-demo`, //a directory to store progress and results files, you can check the progress here
|
|
45
45
|
quotaOfEachTask:1, //The number of subtasks assigned to each worker at one time, the default is 1
|
|
46
|
-
numberOfWorks: 6 //Assign how many workers are working in parallel
|
|
46
|
+
numberOfWorks: 6 //Assign how many workers are working in parallel, default is the number of cpu cores minus one
|
|
47
47
|
});
|
|
48
48
|
|
|
49
49
|
```
|
|
@@ -71,6 +71,8 @@ node examples/example1/run
|
|
|
71
71
|
|
|
72
72
|
Changelog:
|
|
73
73
|
|
|
74
|
+
- 1.2.4 Fix: opt.numberOfWorks not work
|
|
75
|
+
- 1.2.3 Update README
|
|
74
76
|
- 1.2.2 Update README and examples
|
|
75
77
|
- 1.2.1 Handle exceptions and errors in subtasks
|
|
76
78
|
- 1.2.0 Simplified usage by providing the function way and support return Promise
|
package/examples/example0/run.js
CHANGED
|
@@ -2,7 +2,7 @@ let multiTasks = require('../../index').multiTasks;
|
|
|
2
2
|
|
|
3
3
|
//You need to provide the data of all subtasks, multi-tasks will automatically split them and execute them in a multi-threaded manner
|
|
4
4
|
let alltasks = [];
|
|
5
|
-
for(let i=0;i<
|
|
5
|
+
for(let i=0;i<100;i++){
|
|
6
6
|
let task_props = {
|
|
7
7
|
index: i,
|
|
8
8
|
name: `task-${i}`,
|
package/package.json
CHANGED
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "multi-tasks",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.4",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"directories": {
|
|
7
7
|
"example": "example"
|
|
8
8
|
},
|
|
9
9
|
"scripts": {
|
|
10
|
-
"test": "
|
|
10
|
+
"test": "jest"
|
|
11
11
|
},
|
|
12
12
|
"keywords": [
|
|
13
13
|
"multitask",
|
|
14
14
|
"worker",
|
|
15
15
|
"multithread"
|
|
16
16
|
],
|
|
17
|
-
"dependencies": {
|
|
18
|
-
},
|
|
19
17
|
"author": "zhanglei923@gmail.com",
|
|
20
|
-
"license": "MIT"
|
|
18
|
+
"license": "MIT",
|
|
19
|
+
"devDependencies": {
|
|
20
|
+
"jest": "^29.7.0"
|
|
21
|
+
}
|
|
21
22
|
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
let splitter = require('../workers/taskSplitter');
|
|
2
|
+
|
|
3
|
+
let createArray = (len)=>{
|
|
4
|
+
let alltasks = []
|
|
5
|
+
for(let i=0;i<len;i++){
|
|
6
|
+
alltasks.push(i)
|
|
7
|
+
}
|
|
8
|
+
return alltasks;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
test('test taskSplitter', async () => {
|
|
12
|
+
|
|
13
|
+
expect(splitter.split(createArray(3), 5).length).toBe(1);
|
|
14
|
+
expect(splitter.split(createArray(16), 5).length).toBe(4);
|
|
15
|
+
expect(splitter.split(createArray(101), 1).length).toBe(101);
|
|
16
|
+
expect(splitter.split(createArray(101), 33).length).toBe(4);
|
|
17
|
+
});
|
package/workers/master.js
CHANGED
|
@@ -37,11 +37,11 @@ let hasWorker = ()=>{
|
|
|
37
37
|
return workidlist.size !== 0;
|
|
38
38
|
}
|
|
39
39
|
let run = (currentProducer, currentConsumer, opt)=>{
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
};
|
|
40
|
+
let defaultCPUs = numCPUs - 1;
|
|
41
|
+
if(typeof opt === 'undefined') opt = {};
|
|
43
42
|
let masterId = currentProducer.getTaskName();
|
|
44
|
-
if(typeof opt.
|
|
43
|
+
if(typeof opt.quotaOfEachTask === 'undefined') opt.quotaOfEachTask = 1;
|
|
44
|
+
if(typeof opt.numberOfWorks === 'undefined') opt.numberOfWorks = defaultCPUs;
|
|
45
45
|
console.log('master1, masterId=', masterId)
|
|
46
46
|
|
|
47
47
|
|
|
@@ -155,8 +155,7 @@ let start = (ProducerClass, ConsumerClass, taskConfig)=>{
|
|
|
155
155
|
producer.setTaskTrunkInfo(taskConfig);
|
|
156
156
|
consumer.setTaskTrunkInfo(taskConfig);
|
|
157
157
|
run(producer, consumer, {
|
|
158
|
-
|
|
159
|
-
numberOfWorks: 6
|
|
158
|
+
...taskConfig
|
|
160
159
|
});
|
|
161
160
|
}
|
|
162
161
|
module.exports = {
|