Python 3.14 Executor.map buffersize za velike serije proksija
Koristite Python 3.14 Executor.map buffersize da zaustavite trošenje ulaza dok rezultati čekaju, nezavisno od max_workers.
max_workers=8 ograničava izvršne niti. Ali ne sprečava zasebnu petlju predaje da stvori Future za svaku krajnju tačku u ogromnom ulazu.
Python 3.14 dodaje ograničenu opciju unaprednog čitanja:
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 je postojeća sinhrona provera sa mrežnim rokovima i čišćenjem; record_result obrađuje njeno vraćeno opažanje. Vrednosti 8 i 24 su primerni budžeti. besplatna lista proksija nudi javne kandidate za krajnje tačke; čuvajte njihov protokol uz svaku adresu kako bi check_proxy mogao da koristi ispravan prenos.
Kada se međuspremnik predaje napuni, map pauzira trošenje iterabilnog objekta dok se rezultati ne vrate. To važi i za generatore.
map i dalje vraća redosledom ulaza: spora rana provera može zadržati dovršene kasnije rezultate i odložiti dalji ulaz. Za obradu redosledom dovršetka koristite izričito ograničen skup futuresa koji se dopunjuje kako završavaju.
Rešavajte očekivane mrežne kvarove unutar provere ako serija treba da nastavi da vraća rezultate. Neobrađeni izuzetak se podiže kada se taj element dohvati. chunksize u ThreadPoolExecutoru ne daje taj budžet predaje, a starije verzije Pythona nemaju buffersize.