Python 3.14 Executor.map buffersize dideliems proxy paketams
Naudokite Python 3.14 Executor.map buffersize, kad sustabdytumėte įvesties vartojimą, kol laukiama rezultatų, nepriklausomai nuo max_workers.
max_workers=8 riboja vykdomuosius srautus. Tačiau netrukdo atskirai pateikimo kilpai kurti Future kiekvienam galiniam taškui didžiulėje įvestyje.
Python 3.14 prideda ribotą išankstinio skaitymo parinktį:
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 yra esama sinchroninė patikra su tinklo terminais ir valymu; record_result apdoroja grąžintą stebėjimą. Reikšmės 8 ir 24 yra pavyzdiniai biudžetai. nemokamas proxy sąrašas teikia viešus kandidatus galiniams taškams; saugokite jų protokolą su kiekvienu adresu, kad check_proxy galėtų naudoti tinkamą transportą.
Kai pateikimo buferis prisipildo, map pristabdo iteruojamo objekto vartojimą, kol bus pateikti rezultatai. Tai taikoma ir generatoriams.
map vis dar pateikia įvesties tvarka: lėta ankstyva patikra gali sulaikyti jau baigtus vėlesnius rezultatus ir atidėti tolesnę įvestį. Norėdami apdoroti baigimo tvarka, naudokite aiškiai ribotą futures rinkinį, papildomą jiems pasibaigus.
Tikėtinus tinklo sutrikimus apdorokite patikros viduje, jei paketas turi toliau teikti rezultatus. Neapdorota išimtis iškeliama, kai tas elementas paimamas. ThreadPoolExecutor chunksize nesuteikia šio pateikimo biudžeto, o senesnėse Python versijose nėra buffersize.