這是我的問題。我實現了一個小腳本,它執行一些繁重的計算,就像一個node.js模塊。所以,如果我輸入「node myModule.js」,它會計算一秒鐘,然後返回一個值。 現在,我想從我的主Node.JS程序中使用該模塊。我可以把所有的計算在「doSomeCalculation」功能,那麼這樣做:如何執行node.js模塊作爲node.js程序的子進程?
var myModule = require("./myModule");
myModule.doSomeCalculation();
但是,這將是阻塞,因而它會是壞的。我想以非阻塞的方式使用它,例如本地DB調用。所以我試圖使用child_process.spawn和exec,像這樣:
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!"); });
但是,它不起作用。我嘗試在myModule中使用EventEmitter,發出「calculateDone」事件並嘗試在上例中的「ext」變量上添加關聯的偵聽器。仍然不起作用。
至於叉子,它們並不是我想要做的。叉子需要將計算相關的代碼放在主程序中,在父母做它所做的任何事情時分叉,分派,然後我將如何返回結果?
所以,這裏是我的問題:我可以使用子進程做一些非阻塞計算,當計算放在一個節點文件,或者它只是不可能?我應該在Python腳本中進行繁重的計算嗎?在這兩種情況下,我如何將參數傳遞給子進程 - 例如,圖像?
「下午好」?這可能是早上(或更糟糕!)在其他地方:) – elmigranto