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.

Relaterte artikler