对于一些大量list的较为耗时的操作,可使用多核cpu的并行能力加速 对API进行了一次封装,使用起来较为简单
const Parallel = require('parallel-list');
const parallel = new Parallel(5); // 同时使用的cpu数量
parallel.run({
file: path.join(__dirname, './main.js'), // 计算的文件
list: [], // 数据
})
const path = require('path');
const Parallel = require('parallel-list');
const parallel = new Parallel(5);
const TEST_LENGTH = 1000;
const list = Array.from({ length: TEST_LENGTH }).map((item, index) => index);
console.log('run demo');
;(async function() {
console.time('总时间');
const data = await parallel.run({
file: path.join(__dirname, './main.js'), // 单次计算 10ms
list: list,
})
console.timeEnd('总时间');
console.log(`理论耗时:${TEST_LENGTH * 10 / 1000}s`);
console.log('执行结果');
console.log(data);
parallel.close();
})();
main.js
console.log('init main')
module.exports = function(item) {
// 方法计算单次耗时 10ms
const start = Date.now();
while((Date.now() - start) < 10) {}
return Math.sqrt(item);
}