Python 3.14 Executor.map buffersize for store proxy-partier
Bruk buffersize i Executor.map fra Python 3.14 for å stoppe inntaksforbruket mens resultatene venter, uavhengig av max_workers.
max_workers=8 setter en grense for hvor mange tråder som kjører. Det stopper likevel ikke en egen innsendingsløkke fra å lage en Future for hvert endepunkt i et svært stort inntak.
Python 3.14 tilfører et begrenset alternativ for forhåndslesing:
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 sjekken med nettverksfrister og opprydding; record_result tar seg av observasjonen den returnerer. Tallene 8 og 24 er eksempelbudsjetter. gratis proxyliste gir offentlige kandidater for endepunkter; ta vare på protokollen sammen med hver adresse, slik at check_proxy kan bruke riktig transport.
Når innsendingsbufferen blir full, stanser map forbruket av det itererbare til resultater blir levert. Det samme gjelder generatorer.
map gir fortsatt resultater i inntaksrekkefølge: en treg tidlig sjekk kan holde tilbake ferdige resultater lenger ut og forsinke videre inntak. For behandling i fullføringsrekkefølge, bruk et klart avgrenset sett med futures som fylles på etter hvert som de blir ferdige.
Håndter forventede nettverksfeil inne i sjekken dersom partiet skal fortsette å gi resultater. Et unntak som ikke håndteres, kastes når elementet hentes. chunksize i ThreadPoolExecutor gir ikke dette innsendingsbudsjettet, og eldre Python-versjoner mangler buffersize.