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 የላቸውም።

ተዛማጅ ጽሑፎች