Jak mogę wykonać moduł node.js jako proces potomny programu node.js?

Oto mój problem. Zaimplementowałem mały skrypt, który wykonuje ciężkie obliczenia, jako moduł node.js. Jeśli więc wpiszę „node myModule.js”, oblicza się na sekundę, a następnie zwraca wartość. Teraz chcę użyć tego modułu z mojego głównego programu Node.JS. Mogłem po prostu umieścić wszystkie obliczenia w funkcji „doSomeCalculation”, a następnie:

var myModule = require("./myModule");
myModule.doSomeCalculation();

Ale to byłoby blokowanie, więc byłoby źle. Chciałbym go używać w sposób nieblokujący, na przykład natywnie w przypadku połączeń DB. Próbowałem więc użyć child_process.spawn i exec, jak poniżej:

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!"); });

Ale oczywiście nie działa. Próbowałem użyć EventEmittera w myModule, emitując zdarzenia „calculatorDone” i próbując dodać skojarzony słuchacz do zmiennej „ext” w powyższym przykładzie. Nadal nie działa.

Jeśli chodzi o widelce, to tak naprawdę nie staram się tego robić. Widły wymagałyby umieszczenia kodu związanego z obliczeniami w programie głównym, rozwidlania, obliczania w dziecku, podczas gdy rodzic robi to, co robi, a następnie, jak mógłbym zwrócić wynik?

Oto moje pytanie: czy mogę użyć procesu potomnego do wykonania obliczeń nieblokujących, gdy obliczenia są umieszczane w pliku Node, czy jest to po prostu niemożliwe? Czy zamiast tego powinienem wykonać ciężkie obliczenia w skrypcie Pythona? W obu przypadkach, jak mogę przekazać argumenty do procesu potomnego - na przykład obrazu?

questionAnswers(2)

yourAnswerToTheQuestion