Pipeline और Stage प्रतिरूप
बहु-चरणीय समवर्ती पाइपलाइनों का संयोजन
Pipeline और Stage प्रतिरूप, CoddyKit पर Go Academy का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Go Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Go Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
कार्य-प्रवाह क्या है?
समवर्ती कार्य-प्रवाह, चैनलों से जुड़े stage की एक शृंखला होती है। प्रत्येक stage ऊपर वाले stage से मान प्राप्त करता है, उन्हें रूपांतरित करता है और परिणाम नीचे वाले stage को भेजता है, जिससे सभी stage समवर्ती रूप से चल सकते हैं।
सरल तीन-stage कार्य-प्रवाह
Generate → transform → consume:
func generate(nums ...int) <-chan int {
out := make(chan int)
go func() { defer close(out); for _, n := range nums { out <- n } }()
return out
}
func square(in <-chan int) <-chan int {
out := make(chan int)
go func() { defer close(out); for n := range in { out <- n*n } }()
return out
}
for v := range square(generate(2, 3, 4)) {
fmt.Println(v) // 4, 9, 16
}Stage पैटर्न
प्रत्येक stage एक ऐसा फ़ंक्शन होता है जो एक इनपुट चैनल लेता है और एक आउटपुट चैनल लौटाता है। stage को आसानी से संयोजित किया जा सकता है और उन्हें स्वतंत्र रूप से समानांतर चलाया जा सकता है।
कार्य-प्रवाह में कार्य-विभाजन
CPU-आधारित काम को समानांतर चलाने के लिए किसी stage को N गोरूटीन में विभाजित करें:
func parallelSquare(in <-chan int, n int) <-chan int {
outs := make([]<-chan int, n)
for i := 0; i < n; i++ {
outs[i] = square(in) // all read from same in
}
return merge(outs...)
}संदर्भ के साथ रद्दीकरण
प्रत्येक stage को एक संदर्भ दें। रद्द किए जाने पर stage पढ़ना बंद कर देते हैं और अपने आउटपुट चैनल बंद कर देते हैं, जिससे पूरा कार्य-प्रवाह खाली हो जाता है।
func stage(ctx context.Context, in <-chan int) <-chan int {
out := make(chan int)
go func() {
defer close(out)
for {
select {
case v, ok := <-in:
if !ok { return }
select {
case out <- process(v):
case <-ctx.Done(): return
}
case <-ctx.Done(): return
}
}
}()
return out
}पश्च-दबाव
उत्पादक और उपभोक्ता की गति को अलग करने के लिए stage के बीच बफ़र किए गए चैनलों का उपयोग करें। बफ़रिंग के बिना, धीमा stage पूरे कार्य-प्रवाह को रोक देता है।
out := make(chan Result, 50) // buffer 50 resultsत्रुटि प्रसार
बिना panic किए कार्य-प्रवाह में त्रुटियाँ भेजने के लिए मानों को परिणाम संरचना में लपेटें:
type item struct { val int; err error }Done चैनल पैटर्न
सरल कार्य-प्रवाह के लिए context के विकल्प के रूप में Done चैनल का उपयोग करें। सभी stage को रुकने का संकेत देने के लिए Done को बंद करें।
done := make(chan struct{})
defer close(done)क्रम की गारंटी
यदि प्रत्येक stage क्रमिक है, तो सरल कार्य-प्रवाह क्रम बनाए रखता है। समानांतर किए गए stage क्रम बनाए नहीं रखते — आवश्यकता होने पर नीचे की ओर परिणामों को फिर से क्रमबद्ध करने के लिए सूचकांक फ़ील्ड का उपयोग करें।
WaitGroup के साथ कार्य-प्रवाह
अंतिम stage को चैनल बंद करने की आवश्यकता नहीं होती — बस उस पर range चलाएँ। Fan-in में WaitGroup का उपयोग करके सभी उत्पादक गोरूटीन के समाप्त होने के बाद मर्ज किए गए चैनल को बंद करें।
वास्तविक उपयोग
कार्य-प्रवाह के सामान्य उपयोग: ETL डेटा प्रोसेसिंग, चित्रों का आकार बदलना, अभिलेखों का विश्लेषण, बिल्ड सिस्टम और स्ट्रीमिंग अनुरोध हैंडलर।
त्वरित जाँच
बहु-stage कार्य-प्रवाह में रद्दीकरण कैसे भेजते हैं?
पुनरावलोकन: कार्य-प्रवाह पैटर्न
मुख्य बिंदु:
- Stage: func(in <-chan T) <-chan U — कार्य-प्रवाह के लिए संयोजित करें
- संदर्भ के माध्यम से रद्दीकरण; बफ़र किए गए चैनलों के माध्यम से पश्च-दबाव नियंत्रण
- समानांतरता के लिए किसी stage के भीतर कार्य-विभाजन
- त्रुटि प्रसार के लिए मानों को परिणाम संरचना में लपेटें
एआई शिक्षक के साथ Go सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 51
- पाठ
- 203
अक्सर पूछे जाने वाले प्रश्न
क्या “Pipeline और Stage प्रतिरूप” पाठ निःशुल्क है?
हाँ — Go Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “Pipeline और Stage प्रतिरूप” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Go Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“Pipeline और Stage प्रतिरूप” में मैं क्या सीखूँगा?
बहु-चरणीय समवर्ती पाइपलाइनों का संयोजन आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Go Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Go Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Go Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।
“Pipeline और Stage प्रतिरूप” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Go Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Go Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- Pipeline और Stage प्रतिरूप
- समवर्ती त्रुटि प्रबंधन के लिए errgroup
- सेमाफ़ोर प्रतिरूप
- लीक पहचान और रद्दीकरण