"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > कार्यकर्ता धागे और बाल प्रक्रियाओं का गहन विश्लेषण

कार्यकर्ता धागे और बाल प्रक्रियाओं का गहन विश्लेषण

2025-04-13 को पोस्ट किया गया
ब्राउज़ करें:419

वर्कर थ्रेड्स आपको कई थ्रेड्स में जावास्क्रिप्ट कोड चलाने की अनुमति देते हैं। वे SharedArrayBuffer के माध्यम से थ्रेड्स के बीच मेमोरी साझा करने के लिए और डेटा प्रोसेसिंग या कम्प्यूटेशन जैसे CPU- बाउंड कार्यों को बंद करने के लिए आदर्श हैं।

बच्चे की प्रक्रिया ] वे अलगाव की आवश्यकता वाले कार्यों के लिए उपयुक्त हैं या गैर-जावास्क्रिप्ट स्क्रिप्ट या बायनेरिज़ के साथ काम करते समय।

] ] बड़े पैमाने पर छवि परिवर्तनों को संभालते समय, जैसे कि आकार बदलना, फसल करना, या फ़िल्टर लागू करना, वर्कर थ्रेड्स इन कार्यों को एक अलग थ्रेड में उतार सकते हैं ताकि मुख्य इवेंट लूप को अवरुद्ध करने से रोका जा सके।

उदाहरण:

] फ़ंक्शन रिसाइज़िमेज (ImagePath) { नया वादा लौटाएं ((संकल्प, अस्वीकार) => { const कार्यकर्ता = नया कार्यकर्ता ('./ resizeworker.js', {varkdata: imagepath}); कार्यकर्ता। ('संदेश', हल); कार्यकर्ता। ('त्रुटि', अस्वीकार); }); } // उपयोग resizeimage ('image.jpg')। तब () => कंसोल.लॉग ('छवि आकार दिया!')); ]

बड़ी JSON फ़ाइलों को पार्स करना या CSV डेटा को बदलना संसाधन-गहन हो सकता है। वर्कर थ्रेड्स डेटा को chunks में संसाधित कर सकते हैं, यह सुनिश्चित करना कि एप्लिकेशन उत्तरदायी है।

उदाहरण:
] कॉन्स्ट वर्कर = नया कार्यकर्ता ('./ dataparser.js'); कार्यकर्ता। कार्यकर्ता.न ('संदेश', (डेटा) => { कंसोल.लॉग ('पार्सड डेटा:', डेटा); });

] ]

उदाहरण:

] फ़ंक्शन CalutulatePrimes (सीमा) { नया वादा लौटाएं ((संकल्प, अस्वीकार) => { const वर्कर = नया कार्यकर्ता ('./ primeworker.js', {वर्कडेटा: सीमा}); कार्यकर्ता। ('संदेश', हल); कार्यकर्ता। ('त्रुटि', अस्वीकार); }); } // उपयोग CalculatePrimes (100000) .then (primes => कंसोल.लॉग (primes));
const { Worker } = require('worker_threads');

function resizeImage(imagePath) {
  return new Promise((resolve, reject) => {
    const worker = new Worker('./resizeWorker.js', { workerData: imagePath });
    worker.on('message', resolve);
    worker.on('error', reject);
  });
}

// Usage
resizeImage('image.jpg').then(() => console.log('Image resized!'));
उदाहरण:

] Exec ('ls -l', (त्रुटि, stdout, stderr) => { if (त्रुटि) { Console.Error (`त्रुटि: $ {error.message}`); वापस करना; } कंसोल.लॉग (`आउटपुट: \ n $ {stdout}`); }); ] ]

उदाहरण:

] const pythonprocess = spawn ('python', ['script.py']); pythonprocess.stdout.on ('डेटा', (डेटा) => { कंसोल.लॉग (`आउटपुट: $ {डेटा}`); });

] ]
उदाहरण:

const { Worker } = require('worker_threads');

const worker = new Worker('./dataParser.js');
worker.postMessage({ filePath: 'largeData.json' });
worker.on('message', (data) => {
  console.log('Parsed Data:', data);
});
]

विशेषता


const { Worker } = require('worker_threads');

function calculatePrimes(limit) {
  return new Promise((resolve, reject) => {
    const worker = new Worker('./primeWorker.js', { workerData: limit });
    worker.on('message', resolve);
    worker.on('error', reject);
  });
}

// Usage
calculatePrimes(100000).then(primes => console.log(primes));

बच्चे की प्रक्रिया

मेमोरी शेयरिंग


SharedArrayBuffer के माध्यम से समर्थित
const { exec } = require('child_process');

exec('ls -l', (error, stdout, stderr) => {
  if (error) {
    console.error(`Error: ${error.message}`);
    return;
  }
  console.log(`Output:\n${stdout}`);
});
समर्थित नहीं

कार्य अलगाव


साझा वातावरण, कम पृथक

const { spawn } = require('child_process');

const pythonProcess = spawn('python', ['script.py']);

pythonProcess.stdout.on('data', (data) => {
  console.log(`Output: ${data}`);
});

उदाहरण

]

सिस्टम-स्तरीय कार्य या बाहरी कोड

const { exec } = require('child_process');

exec('ls -l', (error, stdout, stderr) => {
  if (error) {
    console.error(`Error: ${error.message}`);
    return;
  }
  console.log(`Output:\n${stdout}`);
});

ओवरहेड

कम (एक ही प्रक्रिया)
उच्च (अलग प्रक्रियाएं) IPC के माध्यम से, धीमी समर्थित भाषाएँ javascript/node.js केवल स्टार्टअप का समयऔर तेज त्रुटि नियंत्रण कम निहित, प्रक्रिया को क्रैश कर सकते हैं पूरी तरह से निहित, पृथक विफलताएं ] इन उपकरणों का लाभ उठाकर, आप अत्यधिक स्केलेबल और उत्तरदायी अनुप्रयोगों का निर्माण कर सकते हैं जो सीपीयू और I/O- गहन कार्यों दोनों को आसानी से संभालते हैं। चाहे आप छवियों को संसाधित कर रहे हों, शेल कमांड को निष्पादित कर रहे हों, या माइक्रोसर्विस का प्रबंधन कर रहे हों, यह समझना कि वर्कर थ्रेड्स और चाइल्ड प्रोसेस का उपयोग कब करना है, यह आपके Node.js अनुप्रयोगों में प्रदर्शन को अनुकूलित करने के लिए महत्वपूर्ण है।
संचार संदेश पासिंग के माध्यम से, तेजी से
कोई भी स्क्रिप्टिंग या सिस्टम-स्तरीय भाषा
और धीमा
] ] ] ] ] निष्कर्ष
विज्ञप्ति वक्तव्य इस लेख को पुन: प्रस्तुत किया गया है: https://dev.to/wallacefreitas/understanding-worker-threads-and-child-process-52nj?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए [email protected] से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3