max_workers=8 avgrensar dei køyrande trådane. Det hindrar likevel ikkje ei separat innsendingsløkke i å lage ein Future for kvart endepunkt i eit enormt inntak.

Python 3.14 legg til eit avgrensa førehandslingsval:

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 eksisterande synkrone kontrollen med nettverksfristar og opprydding; record_result handterer observasjonen han returnerer. Verdiane 8 og 24 er døme på budsjett. gratis proxyliste leverer offentlege kandidatar for endepunkt; hald protokollen deira saman med kvar adresse slik at check_proxy kan bruke rett transport.

Når innsendingsbufferen er full, pausar map forbruket av det itererbare til resultat blir leverte. Dette gjeld også generatorar.

map leverer framleis i inntaksrekkjefølgje: ein treg tidleg kontroll kan halde tilbake ferdige seinare resultat og forseinke vidare inntak. For handsaming i fullføringsrækkjefølgje, bruk eit eksplisitt avgrensa sett med futures som blir fylte på etter kvart som dei blir ferdige.

Handter forventa nettverksfeil inne i kontrollen om partiet skal halde fram med å levere resultat. Eit uhandtert unntak blir kasta når det elementet blir henta. chunksize i ThreadPoolExecutor gir ikkje dette innsendingsbudsjettet, og eldre Python-versjonar manglar buffersize.

Relaterte artiklar