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.

Relaterte artikler