Đây là vấn đề của tôi. Tôi đã triển khai một kịch bản nhỏ thực hiện một số phép tính nặng, như là một mô-đun node.js. Vì vậy, nếu tôi nhập "nút myModule.js", nó tính toán trong một giây, sau đó trả về một giá trị. Bây giờ, tôi muốn sử dụng mô đun đó từ chương trình Node.JS chính của mình. Tôi chỉ có thể đặt tất cả các tính toán trong một hàm "doSomeCalculation" sau đó làm:Làm cách nào để thực thi mô-đun node.js như một tiến trình con của một chương trình node.js?
var myModule = require("./myModule");
myModule.doSomeCalculation();
Nhưng điều đó sẽ bị chặn, do đó nó sẽ là xấu. Tôi muốn sử dụng nó theo cách không chặn, ví dụ như các cuộc gọi DB chẳng hạn. Vì vậy, tôi đã cố gắng sử dụng child_process.spawn và exec, như sau:
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!"); });
Nhưng, tất nhiên, nó không hoạt động. Tôi đã cố gắng sử dụng một EventEmitter trong myModule, phát ra các sự kiện "calculateDone" và cố gắng thêm trình nghe có liên quan vào biến "ext" trong ví dụ trên. Vẫn không hoạt động.
Đối với dĩa, chúng không thực sự là những gì tôi đang cố gắng làm. Forks sẽ yêu cầu đặt mã liên quan đến tính toán trong chương trình chính, forking, tính toán trong các con trong khi cha mẹ làm bất cứ điều gì nó, và sau đó làm thế nào tôi sẽ trả lại kết quả?
Vì vậy, đây là câu hỏi của tôi: tôi có thể sử dụng quy trình con để thực hiện một số tính toán không chặn, khi tính toán được đặt trong tệp Node hay không? Tôi có nên tính toán nặng trong một tập lệnh Python thay thế không? Trong cả hai trường hợp, làm thế nào tôi có thể vượt qua các đối số cho quá trình con - ví dụ, một hình ảnh?
"Xin chào"? Nó có thể là buổi sáng (hoặc thậm chí tệ hơn!) Ở một nơi khác :) – elmigranto