gpt4 book ai didi

javascript - 在 node.js 上以多线程运行任务

转载 作者:搜寻专家 更新时间:2023-10-31 22:46:22 25 4
gpt4 key购买 nike

我是 node.js 的新手,需要一些帮助。我有一个数据数组,必须在多个线程(使用所有 CPU 内核)中使用该数据运行函数。通常对我来说,我确实创建了线程数的线程池,将一些任务推送给它,等到完成,将更多任务发送到队列。但我不知道如何在 nodejs 中做到这一点。

PS:我使用的是最新的 0.8 分支。

最佳答案

Nodejs 被构建为在单个进程上运行,但您可以 spawn其他过程。 cluster模块使用 fork来自 child_process 模块的方法,但它旨在跨进程分配服务器连接并共享同一端口。

我想你想要exec .示例:

var exec = require('child_process').exec,
child;

var array = ["a", "b", "c", "d", "e"]; // your array of data

var n = array.length; // length
var done = 0; // jobs done
var i = n; // iterator

while(i--) { // reverse while loops are faster
(function (argument) { // A closure
child = exec('node otherFunction.js '+argument, // Spawn the process, with an item from your array as an argument.
function (error, stdout, stderr) {
if (error === null) {
done += 1;
if (done === n) {
console.log('Everything is done');
}
}
});
})(array[i]);
}

以上当然是糟糕的代码,甚至没有经过测试,但我认为它会起作用。您所要做的就是调用您想要对 otherFunction.js 中的数组项调用的函数。 , 你会在里面找到 process.argv 中的参数.

关于javascript - 在 node.js 上以多线程运行任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12025641/

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