Python 3.14 Executor.map buffersize-ը մեծ պրոքսի խմբաքանակների համար
Օգտագործեք Python 3.14 Executor.map buffersize-ը՝ մուտքի սպառումը դադարեցնելու համար, քանի դեռ արդյունքները սպասում են, անկախ max_workers-ից։
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 չկա։