Python 3.14 Executor.map buffersize for store proxy-partier
Bruk Python 3.14 Executor.map buffersize for å stanse inntaksforbruket mens resultater venter, uavhengig av max_workers.
max_workers=8 begrenser de kjørende trådene. Det hindrer likevel ikke en separat innsendingsløkke i å opprette en Future for hvert endepunkt i et enormt inntak.
Python 3.14 legger til et begrenset forhåndslesingsalternativ:
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 er den eksisterende synkrone kontrollen med nettverksfrister og opprydding; record_result håndterer observasjonen den returnerer. Verdiene 8 og 24 er eksempelbudsjetter. gratis proxyliste leverer offentlige kandidater for endepunkter; behold protokollen deres sammen med hver adresse slik at check_proxy kan bruke riktig transport.
Når innsendingsbufferen er full, pauser map forbruket av det itererbare til resultater leveres. Dette gjelder også generatorer.
map leverer fortsatt i inntaksrekkefølge: en treg tidlig kontroll kan holde tilbake ferdige senere resultater og forsinke ytterligere inntak. For behandling i fullføringsrekkefølge, bruk et eksplisitt begrenset sett med futures som fylles på etter hvert som de fullføres.
Håndter forventede nettverksfeil inne i kontrollen hvis partiet skal fortsette å levere resultater. Et uhåndtert unntak kastes når det elementet hentes. chunksize i ThreadPoolExecutor gir ikke dette innsendingsbudsjettet, og eldre Python-versjoner mangler buffersize.