max_workers=8 သည် လုပ်ဆောင်နေသော thread များကို ကန့်သတ်သည်။ သို့သော် ကြီးမားသော ထည့်သွင်းမှုတွင် endpoint တစ်ခုစီအတွက် 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 သည် ကွန်ရက် သတ်မှတ်ချိန်များနှင့် ရှင်းလင်းခြင်းပါသော လက်ရှိ synchronous စစ်ဆေးမှု ဖြစ်သည်။ record_result သည် ၎င်းပြန်ပေးသော လေ့လာတွေ့ရှိချက်ကို ကိုင်တွယ်သည်။ 8 နှင့် 24 တန်ဖိုးများသည် နမူနာ ဘတ်ဂျက်များ ဖြစ်သည်။ အခမဲ့ ပရောက်ဆီ စာရင်း သည် endpoint များအတွက် အများသူငှာ ကိုယ်စားလှယ်လောင်းများ ပေးသည်။ check_proxy မှ မှန်ကန်သော သယ်ယူမှုကို အသုံးပြုနိုင်ရန် လိပ်စာတစ်ခုစီနှင့်အတူ ၎င်းတို့၏ ပရိုတိုကောကို ထိန်းသိမ်းပါ။

တင်သွင်းမှု ဘူဖာ ပြည့်သောအခါ ရလဒ်များ ထုတ်ပေးသည်အထိ map သည် ထပ်ခါတလဲလဲ လုပ်နိုင်သော အရာကို အသုံးပြုခြင်းကို ရပ်ဆိုင်းထားသည်။ ၎င်းသည် generator များအတွက်လည်း သက်ဆိုင်သည်။

map သည် ထည့်သွင်းမှု အစဉ်အတိုင်း ထုတ်ပေးနေဆဲ ဖြစ်သည်။ နှေးကွေးသော အစောပိုင်း စစ်ဆေးမှုသည် ပြီးစီးသွားသော နောက်ပိုင်း ရလဒ်များကို ကိုင်ထားပြီး နောက်ထပ် ထည့်သွင်းမှုကို နှောင့်နှေးစေနိုင်သည်။ ပြီးစီးမှု အစဉ်အတိုင်း လုပ်ဆောင်ရန် ပြီးဆုံးသည်နှင့် ပြန်ဖြည့်သော ရှင်းလင်းစွာ ကန့်သတ်ထားသော futures အစုကို အသုံးပြုပါ။

အစုသည် ရလဒ်များ ဆက်ထုတ်ပေးရမည်ဆိုလျှင် မျှော်လင့်ထားသော ကွန်ရက် ချို့ယွင်းမှုများကို စစ်ဆေးမှုအတွင်း ကိုင်တွယ်ပါ။ ထို item ကို ယူသောအခါ မကိုင်တွယ်ရသော exception ကို ဖော်ထုတ်သည်။ ThreadPoolExecutor ၏ chunksize သည် ဤတင်သွင်းမှု ဘတ်ဂျက်ကို မပေးပါ၊ ရှေးကျသော Python ဗားရှင်းများတွင် buffersize မရှိပါ။

ဆက်စပ်ဆောင်းပါးများ