max_workers=8 निष्पादक थ्रेड सीमित करता है। पर यह नहीं रोकता कि एक अलग सबमिशन लूप बड़े इनपुट में हर एंडपॉइंट के लिए Future बनाए।

Python 3.14 एक सीमित प्री-रीड विकल्प जोड़ता है:

from concurrent.futures import ThreadPoolExecutor

with ThreadPoolExecutor(max_workers=8) as executor:
    for result in executor.map(check_proxy, endpoints, buffersize=24):
        record_result(result)

check_proxy नेटवर्क समय-सीमा और सफाई वाला मौजूदा सिंक्रोनस जाँच है; record_result उसके लौटाए गए अवलोकन को संभालता है। मान 8 और 24 उदाहरण बजट हैं। मुफ़्त प्रॉक्सी सूची एंडपॉइंट के लिए सार्वजनिक उम्मीदवार देती है; हर पते के साथ उसका प्रोटोकॉल रखें ताकि check_proxy सही ट्रांसपोर्ट उपयोग कर सके।

जब सबमिशन बफ़र भर जाता है, map परिणाम मिलने तक इटरेबल की खपत रोक देता है। यह जनरेटर पर भी लागू होता है।

map अब भी इनपुट क्रम में देता है: धीमी शुरुआती जाँच पूरे हो चुके बाद के परिणामों को रोक सकती है और आगे का इनपुट विलंबित कर सकती है। पूर्णता-क्रम में प्रसंस्करण के लिए स्पष्ट रूप से सीमित futures का समूह उपयोग करें जो पूरा होने पर फिर भरता है।

यदि बैच को परिणाम देना जारी रखना है तो अपेक्षित नेटवर्क विफलताओं को जाँच के भीतर संभालें। वह आइटम लाते समय अनसुलझा अपवाद उठता है। ThreadPoolExecutor का chunksize यह सबमिशन बजट नहीं देता, और पुराने Python संस्करणों में buffersize नहीं है।

संबंधित लेख