buffersize d'Executor.map en Python 3.14 pour de grands lots de proxies
Utilisez buffersize d'Executor.map en Python 3.14 pour suspendre la consommation d'entrée pendant l'attente des résultats, indépendamment de max_workers.
max_workers=8 limite les threads d'exécution. Il n'empêche pas une boucle de soumission séparée de créer un Future pour chaque point de terminaison dans une entrée énorme.
Python 3.14 ajoute une option de lecture anticipée bornée :
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 est la vérification synchrone existante, avec délais réseau et nettoyage ; record_result traite l'observation renvoyée. Les valeurs 8 et 24 sont des budgets d'exemple. La liste de proxies gratuits fournit des candidats publics pour les points de terminaison ; conservez leur protocole avec chaque adresse afin que check_proxy utilise le bon transport.
Lorsque le tampon de soumission est plein, map suspend la consommation de l'itérable jusqu'à ce que des résultats soient produits. Cela vaut aussi pour les générateurs.
map produit toujours dans l'ordre d'entrée : une vérification précoce lente peut retenir des résultats suivants déjà terminés et retarder l'entrée restante. Pour traiter dans l'ordre d'achèvement, utilisez un ensemble de futures explicitement borné, réalimenté au fur et à mesure des terminaisons.
Traitez les échecs réseau attendus à l'intérieur de la vérification si le lot doit continuer à produire des résultats. Une exception non traitée est levée lors de la récupération de cet élément. chunksize de ThreadPoolExecutor n'offre pas ce budget de soumission, et les versions antérieures de Python n'ont pas buffersize.