buffersize de Executor.map en Python 3.14 para lotes grandes de proxies
Use buffersize de Executor.map en Python 3.14 para pausar el consumo de entrada mientras esperan los resultados, con independencia de max_workers.
max_workers=8 limita los hilos de ejecución. No impide que un bucle de envío separado cree un Future para cada extremo en una entrada enorme.
Python 3.14 añade una opción de lectura anticipada acotada:
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 es la comprobación síncrona existente, con plazos de red y limpieza; record_result gestiona la observación que devuelve. Los valores 8 y 24 son presupuestos de ejemplo. La lista de proxies gratuitos ofrece candidatos públicos para los extremos; conserve su protocolo junto a cada dirección para que check_proxy use el transporte correcto.
Cuando se llena el búfer de envío, map pausa el consumo del iterable hasta que se entregan resultados. Esto también se aplica a los generadores.
map sigue entregando en orden de entrada: una comprobación temprana lenta puede retener resultados posteriores ya completados y retrasar más entrada. Para procesar en orden de finalización, use un conjunto de futures explícitamente acotado que se repone a medida que terminan.
Gestione los fallos de red esperados dentro de la comprobación si el lote debe seguir entregando resultados. Se lanza una excepción no gestionada cuando se recupera ese elemento. El chunksize de ThreadPoolExecutor no aporta este presupuesto de envío, y las versiones anteriores de Python carecen de buffersize.