buffersize d'Executor.map de Python 3.14 per a lots grans de proxys
Feu servir buffersize d'Executor.map de Python 3.14 per aturar el consum d'entrada mentre esperen els resultats, independentment de max_workers.
max_workers=8 limita els fils d'execució. Però no impedeix que un bucle d'enviament separat creï un Future per a cada punt final en una entrada enorme.
Python 3.14 afegeix una opció de lectura anticipada limitada:
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 és la comprovació síncrona existent, amb terminis de xarxa i neteja; record_result gestiona l'observació que retorna. Els valors 8 i 24 són pressupostos d'exemple. llista de proxys gratuïts proporciona candidats públics per als punts final; manteniu el seu protocol amb cada adreça perquè check_proxy pugui usar el transport correcte.
Quan s'omple el búfer d'enviament, map atura el consum de l'iterable fins que es lliuren resultats. Això també s'aplica als generadors.
map encara lliura en ordre d'entrada: una comprovació primerenca lenta pot retenir resultats posteriors ja completats i endarrerir més entrada. Per processar en ordre de finalització, feu servir un conjunt de futures explícitament limitat que es reposa a mesura que acaben.
Gestioneu les fallades de xarxa esperades dins de la comprovació si el lot ha de continuar lliurant resultats. Es llança una excepció no gestionada quan es recupera aquest element. chunksize de ThreadPoolExecutor no ofereix aquest pressupost d'enviament, i les versions anteriors de Python no tenen buffersize.