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 नाही.

संबंधित लेख