gpt4 book ai didi

javascript - Nodejs中如何集群——只是本地计算

转载 作者:行者123 更新时间:2023-12-03 01:48:18 26 4
gpt4 key购买 nike

我使用nodejs来进行一些计算(没有express应用程序!)。

我的文件“calculations.js”正在处理大量数据并进行大量计算。最后,我得到了一个简单的结果。

由于计算量很大,而且只使用了 16 个核心中的一个,因此在我的设备上仍然需要大量时间。

如何利用我的 16 个核心?所有有关 Nodejs 集群模块的示例始终假设某种 http 连接。

我尝试了以下方法,但没有成功:

//cluster.js
var cluster = require('cluster');
var numCPUs = 16;

if (cluster.isMaster) {
for (var i = 0; i < numCPUs; i++) {
cluster.fork();
}
} else {
require('./calculations');
}

编辑:

//calculations.js
const array = [{name: "target"},{name:"walmart"},{}, etc. ] // 150 objects

array.map((supermarket) => {
calculationFunction(supermarket.name);
}

编辑:对我来说,如果 array.map 函数以某种方式“集群”,这将有很大帮助 - 这意味着函数“calculationFunction”的 150 次调用将分布在我的 16 个核心上。这应该很容易实现,不是吗!?

看来我的文件“计算”现在刚刚开始 16x,但方式相同。所以这个过程的时间实际上变得更长了!?

非常感谢您的帮助。

亲切的问候

最佳答案

嗯,这也是 Node.js 和大多数其他语言的限制之一。因为 Node 是单线程的,所以它只使用您的一个机器核心并使用异步/非阻塞设计模拟多线程。

集群不会帮助您,因为它会在每个核心上创建脚本的多个实例,但它们都在执行相同的任务而无需通信,因此对您来说毫无用处。

您可以做的是将代码划分为多个独立代码块,并创建一个在不同内核上运行的子进程,以便代码更有效地使用您的机器代码。

或者重写为golang :) 这将使您轻松利用所有机器的核心。

关于javascript - Nodejs中如何集群——只是本地计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50535421/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com