3 つの並べ替えアルゴリズムを実装しました。それらを並行して実行し、console.log
終了したらすぐに印刷したいと考えています。parallel
Async ライブラリ ( https://github.com/caolan/async ) を使用して関数を使用しようとしましたが、期待どおりに動作していないようです。子プロセスの生成に関するトピックをいくつか見ましたが、次のソートを実行する前に、常に 1 つのソートが完了するのを待っているようです。常に実行された順序で印刷されます。実行順序に関係なく、高速な並べ替えが低速な並べ替えの前に印刷されると思います。node.jsでこのタイプの動作を実現することは可能ですか? もしそうなら、どのように?そうでない場合、なぜですか?
2 に答える
0
並べ替えは同期操作です。
シングルスレッドであるため、いくつかの子プロセスNode.js
を生成せずに複数の並べ替えを並行して実行する方法はありません。単一プロセスでは、同期コードを並行して実行することはできません。Node.js
あなたができる最善のことは、各ソートアルゴリズムをメタ関数にラップして、子プロセスを生成し、実際のソートをそれにディスパッチすることです。
本番環境で並列処理を実現したい場合は、タスクごとに新しいワーカーを生成するのではなく、クラスターのようなものを使用して一連のワーカーを保持するのが最善です。
同様の機能を持つ、すぐに使用できるライブラリがいくつかあります。google: node-compute-clusterを使用して 1 つを見つけました。Connor Blackは、彼の回答で別のことについて言及しました。
于 2013-10-18T12:30:39.257 に答える
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);
于 2013-10-17T19:51:33.870 に答える