ここに私の問題があります。私はnode.jsモジュールのように計算量の多い小さなスクリプトを実装しました。したがって、「node myModule.js」と入力すると、1秒間計算されてから値が返されます。 今、メインのNode.JSプログラムからそのモジュールを使いたいと思います。私はちょうどその「doSomeCalculation」機能で、すべての計算をします置くことができます:node.jsプログラムの子プロセスとしてnode.jsモジュールを実行するにはどうすればよいですか?
var myModule = require("./myModule");
myModule.doSomeCalculation();
しかし、それはこのように、それは悪いことだ、ブロックされるだろう。私は非ブロック的な方法でそれを使用したいと思います。たとえば、DBコールはネイティブに呼びます。もちろん、それは動作しません、
var spawn = require("child_process").spawn;
var ext = spawn("node ./myModule.js", function(err, stdout, stderr) { /* whatevs */ });
ext.on("exit", function() { console.log("calculation over!"); });
しかし:だから私はこのように、child_process.spawnとexecを使用しようとしました。私はmyModuleのEventEmitterを使用して、 "calculateDone"イベントを出し、上記の例の "ext"変数に関連するリスナーを追加しようとしました。まだ動作しません。
フォークは、実際に私がしようとしているものではありません。フォークは、メインプログラムに計算関連のコードを入れ、フォークし、親が何をしている間に計算し、結果を返すのですか?
これは私の質問です。子プロセスを使用して、ノンブロッキング計算を行うことができますか?計算がノードファイルに置かれているか、それは単なる不可能なのでしょうか?代わりにPythonスクリプトで重い計算を行うべきですか?どちらの場合でも、子プロセスに引数を渡すにはどうすればよいですか?
「午後」ですか?それは朝(またはさらに悪い!)どこかにあるかもしれません:) – elmigranto