यहां मेरी समस्या है। मैंने एक छोटी सी स्क्रिप्ट लागू की जो कुछ भारी गणना करता है, एक node.js मॉड्यूल के रूप में। इसलिए, यदि मैं "node myModule.js" टाइप करता हूं, तो यह एक सेकंड के लिए गणना करता है, फिर एक मान देता है। अब, मैं उस मॉड्यूल का उपयोग अपने मुख्य नोड.जेएस प्रोग्राम से करना चाहता हूं। मैं सिर्फ एक "doSomeCalculation" समारोह में सभी गणना डाल सकता है तो कार्य करें:मैं node.js मॉड्यूल को node.js प्रोग्राम की बाल प्रक्रिया के रूप में कैसे निष्पादित कर सकता हूं?
var myModule = require("./myModule");
myModule.doSomeCalculation();
लेकिन उस अवरुद्ध किया जाएगा, इस प्रकार यह बुरा होगा। मैं इसे गैर-अवरुद्ध तरीके से उपयोग करना चाहता हूं, उदाहरण के लिए, डीबी कॉल मूल रूप से हैं। इसलिए मैं, child_process.spawn और कार्यकारी उपयोग करने के लिए इस तरह की कोशिश की:
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!"); });
लेकिन, बेशक, यह काम नहीं करता। मैंने अपने मॉड्यूल में इवेंटइमीटर का उपयोग करने की कोशिश की, "गणना पूर्ण" घटनाओं को उत्सर्जित किया और ऊपर दिए गए उदाहरण में "ext" चर पर संबंधित श्रोता जोड़ने की कोशिश की। अभी भी काम नहीं करता है।
फोर्क के लिए, वे वास्तव में नहीं हैं जो मैं करने की कोशिश कर रहा हूं। फोर्क्स को मुख्य कार्यक्रम में गणना-संबंधित कोड डालने की आवश्यकता होगी, बच्चे में गणना करनी होगी, जबकि माता-पिता जो कुछ भी करता है, और फिर मैं परिणाम कैसे वापस करूँगा?
तो मेरा प्रश्न यह है: क्या मैं कुछ गैर-अवरुद्ध गणना करने के लिए एक बाल प्रक्रिया का उपयोग कर सकता हूं, जब गणना नोड फ़ाइल में रखी जाती है, या यह असंभव है? क्या मुझे इसके बजाय पाइथन लिपि में भारी गणना करना चाहिए? दोनों मामलों में, मैं बाल प्रक्रिया में तर्क कैसे पारित कर सकता हूं - उदाहरण के लिए, एक छवि?
"शुभ दोपहर"? यह सुबह हो सकता है (या इससे भी बदतर!) कहीं और :) :) – elmigranto