Node.js 如何在Node JS中的多个CPU核之间分割巨大循环的进程? 我的情况是,我需要尽可能快地解析和处理数百个(可能是数千个)JSON文件,而不是在C++中进行(并行处理看起来更容易)。

Node.js 如何在Node JS中的多个CPU核之间分割巨大循环的进程? 我的情况是,我需要尽可能快地解析和处理数百个(可能是数千个)JSON文件,而不是在C++中进行(并行处理看起来更容易)。,node.js,parallel-processing,Node.js,Parallel Processing,代码大致如下: var dir = fs.readdirSync('./folder') //making array of all json files in relevant folder for(i=0; i < dir.length; i++){ let somejson = fs.readFileSync(`./folder${dir[i]}`) //storing file content in a variable let parsedJSON = JSON.parse(so

代码大致如下:

var dir = fs.readdirSync('./folder') //making array of all json files in relevant folder
for(i=0; i < dir.length; i++){
let somejson = fs.readFileSync(`./folder${dir[i]}`) //storing file content in a variable
let parsedJSON = JSON.parse(somejson); //parsing said variable
someheavyfunction(parsedJSON)
} //performing heavy computations on parsed content of an individual json file
var dir=fs.readdirSync('./folder')//生成相关文件夹中所有json文件的数组
对于(i=0;i
我发现很难弄清楚的是,我如何才能有效地在我的机器的所有CPU之间分割这个过程?假设dir数组的长度除以8,每个部分分配给不同的核心?关于集群模块,我所能找到的一切似乎都是指处理多个用户从他们的web客户端\浏览器与服务器通信。在我的例子中,很少有用户与服务器通信,一次很少有一个以上的用户。 *请注意,服务器将链接到某些消息传递系统(可能是Discord\Telegram机器人,尚未决定)
任何指针都将受到欢迎,我们必须准确地看到
someheavyfunction()
正在做什么才能有任何想法。答案在于将该功能所做的工作分解为单独的工作块。群集模块不是为这种类型的应用程序构建的。您必须手动创建工作线程或进程,手动将工作分解为块,然后将一块工作发送给每个工作进程。完成后,发送另一个块,直到处理完所有块。简单地说,someheavyfunction()在json文件中的不同值之间进行数千次比较,并在某些连接处更改函数中变量的值。不应该有任何东西阻止单独处理每个json文件,因为处理任何json文件的输出对处理任何其他json文件的输出都没有影响{parentPort.postMessage('string')}
/./chunk1.js是处理
var dir=fs.readdirSync('./folder')内容子集的同一代码
,但我的端口3000没有它``错误:listen EADDRINUSE:地址已在使用:::3000代码:'EADDRINUSE',错误号:-4091,系统调用:'listen',地址:':','端口:3000``显然,您的线程中有一些代码正在调用
服务器。listen(3000)
并尝试启动服务器。由于您尚未显示该代码,我只能说工作代码应仅为处理传入的
worker.on('message',…)的代码
messages和该辅助代码不应导入除帮助其处理消息之外的任何其他功能。我认为添加const{jsonArray,someheavyfunction}=require('./server.js'))可能触发了server.js中与端口相关的操作,因为当我简单地编写分别定义和分配someheavyfunction和jsonArray的代码时,它运行时没有错误:)这真的意味着当我需要('somescriptfile.js')时它在提供模块之前执行所有代码。导出部分代码?如中所示,
http.listen(3000,()=>console.log(“在端口***3000上侦听”)
会以这种方式触发两次吗?