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

मैं ड्रॉपबॉक्स से एक साथ कई फ़ाइलें डाउनलोड करने के लिए गो में गोरआउट्स का उपयोग कैसे कर सकता हूं?

2024-11-08 को प्रकाशित
ब्राउज़ करें:300

How can I utilize Goroutines in Go to download multiple files concurrently from Dropbox?

गोरोइन्स का उपयोग करके गो में समानांतर फ़ाइल डाउनलोड

गो में, गोरोइन्स का उपयोग करके फ़ाइलों को एक साथ डाउनलोड करना और सहेजना संभव है। गोरोइन्स हल्के थ्रेड निष्पादन की अनुमति देते हैं, समानांतर प्रसंस्करण की सुविधा प्रदान करते हैं और प्रदर्शन में सुधार करते हैं। आयात ( "एन्कोडिंग/जेसन" "एफएमटी" "आईओ" "io/ioutil" "नेट/http" "नेट/यूआरएल" "ओएस" "पथ/फ़ाइलपथ" "साथ-साथ करना" ) // साख स्थिरांक ऐप_की स्ट्रिंग = "" स्थिरांक ऐप_सीक्रेट स्ट्रिंग = "" // प्राधिकरण संकेत - लिपि var कोड स्ट्रिंग // सांकेतिक प्रतिक्रिया टोकनरेस्पॉन्स संरचना टाइप करें { AccessToken स्ट्रिंग `json:"access_token"` } // फ़ाइल संरचना फ़ाइल संरचना टाइप करें { पथ स्ट्रिंग } // फ़ाइल सूची प्रतिक्रिया FileListResponse संरचना टाइप करें { फ़ाइल सूची []फ़ाइल `json:"contents"` } // गोरोइन्स का उपयोग करके एक फ़ाइल डाउनलोड करें func डाउनलोड_फ़ाइल(फ़ाइल फ़ाइल, टोकन टोकनरेस्पॉन्स, wg *sync.WaitGroup) { डाउनलोड_फाइल := fmt.Sprintf('https://api-content.dropbox.com/1/files/dropbox/%s?access_token=%s', फाइल.पाथ, टोकन.एक्सेसटोकन) सम्मान, _ := http.Get(download_file) सम्मान स्थगित करें.Body.Close() फ़ाइल नाम := फ़ाइलपथ.बेस(फ़ाइल.पथ) बाहर, त्रुटि := os.Create(फ़ाइल नाम) यदि त्रुटि !=शून्य { घबराहट(गलती) } स्थगित करें। बंद करें() io.कॉपी(आउट, रिस्पेक्ट.बॉडी) wg.हो गया() } func मुख्य() { // प्राधिकरण और टोकन पुनर्प्राप्ति Authorize_url := fmt.Sprintf('https://www.dropbox.com/1/oauth2/authorize?response_type=code&client_id=%s', app_key) fmt.Printf(''1. यहां जाएं: %s\n'',authorize_url) fmt.Println("2. 'अनुमति दें' पर क्लिक करें (आपको पहले लॉग इन करना पड़ सकता है)") fmt.Println('3. प्राधिकरण कोड की प्रतिलिपि बनाएँ।') fmt.Printf ("यहां प्राधिकरण कोड दर्ज करें:") fmt.Scanf('%s', &कोड) // फ़ाइल सूची प्राप्त करें file_list_url := fmt.Sprintf("https://api.dropbox.com/1/metadata/dropbox/Camera Uploads?access_token=%s", tr.AccessToken) resp2, _ := http.Get(file_list_url) सम्मान स्थगित करें2.Body.Close() सामग्री2, _ := ioutil.ReadAll(resp2.Body) var flr FileListResponse json.Unmarshal(contents2, &flr) // सभी गोरआउट्स समाप्त होने तक प्रतीक्षा करने के लिए वेटग्रुप var wg sync.WaitGroup // फ़ाइलें एक साथ डाउनलोड करें मेरे लिए, फ़ाइल := रेंज flr.FileList { wg.जोड़ें(1) डाउनलोड_फ़ाइल पर जाएँ (फ़ाइल, tr, &wg) अगर मैं >= 2 { तोड़ना } } wg.रुको() }

इस संशोधित कोड में, हम निष्पादित होने वाले गोरआउट्स की संख्या को ट्रैक करने के लिए wg नामक एक सिंक.वेटग्रुप जोड़ते हैं। हम प्रत्येक goroutine शुरू करने से पहले wg बढ़ाते हैं और जब प्रत्येक goroutine wg.Done() का उपयोग करके समाप्त हो जाता है तो इसे घटाते हैं। मुख्य गोरोइनट wg.Wait() को कॉल करके सभी गोरोइन के समाप्त होने की प्रतीक्षा करता है। यह सुनिश्चित करता है कि प्रोग्राम सभी फ़ाइलें डाउनलोड होने से पहले बाहर नहीं निकलता है।

नवीनतम ट्यूटोरियल अधिक>

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

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

Copyright© 2022 湘ICP备2022001581号-3