gpt4 book ai didi

node.js - 每次我在 Node.js 中调用递归函数时如何生成新进程

转载 作者:搜寻专家 更新时间:2023-11-01 00:01:40 24 4
gpt4 key购买 nike

我正在尝试创建一个递归函数,比如合并排序。我想在每次调用该函数时都创建一个新进程。

基本上我想在每次调用函数时将任务分成两部分并将每个部分传递给新进程。

这是我的代码:

merge.js

process.stdin.resume();
process.stdin.setEncoding('utf8');

process.stdin.on('data', function (chunk) {
var arr = chunk.trim().split(' ');

mergeSort(arr,0,arr.length - 1);
// I want to create new threads like this
// CreateNewLeftThread
// CreateNewRightThread
// Join(lefThread.rightThread)


function mergeSort(arr,left,right) {

if (left < right) {

var mid = Math.floor(left + (right - left)/2);
mergeSort(arr,left,mid);
mergeSort(arr,mid+1,right);
merge(arr,left,right,mid);

}

}

function Merge(Parameters) {

/*Code Here*/

}

process.exit(0);

});

最佳答案

你真的需要吗? http://nodejs.org/api/child_process.html#child_process_child_process_fork_modulepath_args_options

这样做会产生开销。

These child Nodes are still whole new instances of V8. Assume at least 30ms startup and 10mb memory for each new Node. That is, you cannot create many thousands of them.

我宁愿有一些消息队列或只是一个子进程池。因此,每次您需要创建一个新进程时,您只需将带有参数的消息推送到池实例之一或队列中。

如果您的 Merge 函数足够快,就没有理由拥有所有这些东西,直接计算就可以了。

关于node.js - 每次我在 Node.js 中调用递归函数时如何生成新进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28785711/

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