चाइल्ड प्रोसेस
Node.js में चाइल्ड प्रोसेस ऐसे स्वतंत्र प्रोसेस होते हैं जो मुख्य प्रक्रिया (main process) के समानांतर चल सकते हैं। ये प्रोसेस मुख्य Event Loop को ब्लॉक किए बिना भारी या समय-सापेक्ष कार्यों को निष्पादित करने की क्षमता प्रदान करते हैं। चाइल्ड प्रोसेस का उपयोग विशेष रूप से तब किया जाता है जब कोई एप्लिकेशन डेटा प्रोसेसिंग, बैच कार्य, या कई कार्यों को समानांतर में चलाना चाहता है।
Node.js में fork, spawn और exec जैसे मेथड्स का उपयोग करके चाइल्ड प्रोसेस बनाए जाते हैं। इन प्रोसेसों के बीच Inter-Process Communication (IPC) के माध्यम से डेटा साझा किया जाता है। चाइल्ड प्रोसेस का सही तरीके से उपयोग करने के लिए Node.js की सटीक सिंटैक्स, डेटा स्ट्रक्चर, एल्गोरिदम और OOP सिद्धांतों की समझ आवश्यक है।
इस ट्यूटोरियल में, पाठक सीखेंगे कि कैसे चाइल्ड प्रोसेस बनाए जाएं, उनके बीच संदेश भेजे और प्राप्त किए जाएं, त्रुटियों को हैंडल किया जाए और भारी कार्यों को प्रभावी ढंग से समानांतर निष्पादित किया जाए। इस सामग्री के पूरा होने पर, डेवलपर्स सुरक्षित और प्रभावी चाइल्ड प्रोसेस निर्माण और प्रबंधन में सक्षम होंगे और उन्हें वास्तविक परियोजनाओं में लागू कर सकेंगे।
मूल उदाहरण
textconst { fork } = require('child_process');
// सरल चाइल्ड प्रोसेस
const child = fork('./taskChild.js');
// मुख्य प्रोसेस से संदेश भेजें
child.send({ task: 'sumCalculate', numbers: [1, 2, 3, 4, 5] });
// चाइल्ड प्रोसेस से संदेश प्राप्त करें
child.on('message', (result) => {
console.log('चाइल्ड प्रोसेस से परिणाम:', result);
});
// त्रुटि प्रबंधन
child.on('error', (err) => {
console.error('चाइल्ड प्रोसेस में त्रुटि:', err);
});
// taskChild.js
process.on('message', (msg) => {
const sum = msg.numbers.reduce((a, b) => a + b, 0);
process.send(sum);
});
इस उदाहरण में fork मेथड का उपयोग करके चाइल्ड प्रोसेस बनाया गया है। चाइल्ड प्रोसेस taskChild.js को execute करता है, जो मुख्य प्रक्रिया द्वारा भेजे गए डेटा की गणना करता है। child.send और process.on('message') का उपयोग करके मुख्य और चाइल्ड प्रोसेस के बीच सुरक्षित डेटा आदान-प्रदान किया जाता है।
reduce मेथड का उपयोग डेटा को कुशलता से प्रोसेस करने के लिए किया गया है। error इवेंट का उपयोग कर त्रुटियों को हैंडल किया गया है, जिससे मुख्य प्रक्रिया सुरक्षित रहती है। यह उदाहरण Node.js में चाइल्ड प्रोसेस की मूल संरचना, संदेश संचार और मॉड्यूलरिटी के सर्वोत्तम अभ्यास को दर्शाता है।
व्यावहारिक उदाहरण
textconst { fork } = require('child_process');
const path = require('path');
const tasks = ['task1', 'task2', 'task3'];
const results = [];
tasks.forEach((taskName, index) => {
const child = fork(path.join(__dirname, 'worker.js'));
child.send({ task: taskName, data: Array.from({ length: 1000 }, (_, i) => i + 1) });
child.on('message', (result) => {
results[index] = result;
console.log(`चाइल्ड प्रोसेस ${taskName} पूरा हुआ:`, result);
if (results.filter(Boolean).length === tasks.length) {
console.log('सभी चाइल्ड प्रोसेस पूर्ण:', results);
}
});
child.on('error', (err) => {
console.error(`चाइल्ड प्रोसेस ${taskName} में त्रुटि:`, err);
});
});
// worker.js
process.on('message', (msg) => {
const sum = msg.data.reduce((acc, val) => acc + val, 0);
process.send(sum);
});
यह उन्नत उदाहरण कई चाइल्ड प्रोसेस को समानांतर में चलाने का तरीका दिखाता है। प्रत्येक प्रोसेस स्वतंत्र रूप से डेटा प्रोसेस करता है और परिणाम मुख्य प्रक्रिया को भेजता है। परिणामों को एक array में संग्रहित किया जाता है और सभी प्रोसेस पूरे होने पर प्रदर्शित किया जाता है।
reduce मेथड का उपयोग कुशल गणना के लिए किया गया है। worker.js में लॉजिक को मॉड्यूलर बनाना कोड की पठनीयता और रखरखाव क्षमता को बढ़ाता है। त्रुटि हैंडलिंग प्रत्येक चाइल्ड प्रोसेस के लिए लागू की गई है। यह पैटर्न वास्तविक परियोजनाओं में बैच प्रोसेसिंग और समानांतर कार्यों के लिए आदर्श है।
Node.js में चाइल्ड प्रोसेस के सर्वोत्तम अभ्यास में प्रोसेस की संख्या सीमित करना, त्रुटियों का पूरा हैंडलिंग, मेमोरी अनुकूलन, और प्रोसेस के पुन: उपयोग शामिल हैं। सामान्य गलतियाँ हैं: अप्राप्त त्रुटियाँ, फंसे हुए प्रोसेस जो मेमोरी लीक पैदा करते हैं और अनावश्यक जटिल एल्गोरिदम।
📊 संदर्भ तालिका
Node.js Element/Concept | Description | Usage Example |
---|---|---|
fork | एक स्वतंत्र चाइल्ड प्रोसेस बनाता है | const child = fork('./worker.js'); |
process.send | चाइल्ड प्रोसेस को डेटा भेजता है | child.send({ task: 'sum', numbers: [1,2,3] }); |
child.on('message') | चाइल्ड प्रोसेस से संदेश प्राप्त करता है | child.on('message', msg => console.log(msg)); |
child.on('error') | चाइल्ड प्रोसेस में त्रुटि पकड़ता है | child.on('error', err => console.error(err)); |
reduce | Array के संक्षिप्त गणना के लिए | const sum = data.reduce((a,b)=>a+b,0); |
चाइल्ड प्रोसेस Node.js में समानांतर प्रोसेसिंग की सुविधा प्रदान करते हैं और मुख्य Event Loop को ब्लॉक नहीं करते। चाइल्ड प्रोसेस निर्माण, संदेश आदान-प्रदान, त्रुटि प्रबंधन और प्रदर्शन अनुकूलन में विशेषज्ञता प्राप्त करना, स्केलेबल और कुशल एप्लिकेशन विकसित करने के लिए आवश्यक है।
आगामी चरणों में process pools, cluster module और उन्नत asynchronous patterns शामिल हैं। वास्तविक उपयोग में डेटा aggregation, real-time calculations और distributed task execution शामिल हैं। आगे के अध्ययन के लिए Node.js documentation, open-source उदाहरण और community best practices उपयोगी हैं।
🧠 अपने ज्ञान की परीक्षा करें
अपने ज्ञान की परीक्षा करें
इस इंटरैक्टिव क्विज़ के साथ अपनी चुनौती लें और देखें कि आप विषय को कितनी अच्छी तरह समझते हैं
📝 निर्देश
- हर प्रश्न को ध्यान से पढ़ें
- हर प्रश्न के लिए सबसे अच्छा उत्तर चुनें
- आप जितनी बार चाहें क्विज़ दोबारा दे सकते हैं
- आपकी प्रगति शीर्ष पर दिखाई जाएगी