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 չկա։

Առնչվող հոդվածներ