我实现了3种排序算法,我想并行运行它们,并在完成后立即打印console.log
。我尝试使用异步库(https://github.com/caolan/async)使用parallel
函数,但它似乎没有按照我预期的方式运行。我看到了一些关于产生子进程的主题,但是在执行下一个进程之前总是等待一种完成;它始终按执行顺序打印。我认为无论执行顺序如何,我都会在慢速排序之前打印出更快的排序。是否可以使用node.js实现此类行为?如果是这样,怎么样?如果没有,为什么不呢?
答案 0 :(得分:0)
我真的很喜欢这个图书馆:http://adambom.github.io/parallel.js/
您可以像这样使用它(来自文档):
var slowSquare = function (n) {
var i = 0;
while (++i < n * n) {}
return i;
};
// Create a job
var p = new Parallel(100000);
// Spawn our slow function
p.spawn(slowSquare).then(yourCallback);
答案 1 :(得分:0)
排序是一种同步操作。
因为Node.js
是单线程的,所以无法并行运行多种类型的几个child processes。单个Node.js
进程无法并行运行同步代码。
你能做的最好的事情就是将每个排序算法包装成一个元函数,它将生成一个子进程,然后将实际的排序分配给它。
您希望在生产中实现并行性,然后最好使用cluster之类的东西来保留一组工作人员,而不是为每个任务生成一个新的工作人员。
有一些具有类似功能的现成库。我刚刚找到一个使用谷歌:node-compute-cluster。 Connor Black 在in his answer上提到了另一个。