max_workers=8 limitéiert d ausféierend Threaden. Et verhënnert awer net, datt eng separat Soumissiounsschleef fir all Endpunkt an engem risegen Input eng Future uleet.

Python 3.14 setzt eng begrenzt Viruleesoptioun derbäi:

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 ass déi bestehend synchron Kontroll mat Netzwierksfristen an Opraumen; record_result behandelt d Observatioun, déi zréckkënnt. D Wäerter 8 an 24 sinn Beispillbudgeten. D gratis Proxy-Lëscht bitt ëffentlech Kandidaten fir Endpunkten; behält hire Protokoll bei all Adress, sou datt check_proxy de richtegen Transport benotze kann.

Wann de Soumissiounsbuffer voll ass, pauséiert map de Verbrauch vum Iterable, bis Resultater geliwwert ginn. Dat gëllt och fir Generatoren.

map liwwert nach ëmmer an der Inputuerdnung: eng lues fréi Kontroll kann fäerdeg spéider Resultater zeréckhalen an weideren Input verzögeren. Fir d Veraarbechtung an der Fäerdegstellungsuerdnung benotzt eng explizit begrenzt Set vu futures, déi opgefëllt gëtt, wéi se fäerdeg ginn.

Behandelt erwaarde Netzwierksfeeler bannent der Kontroll, wann d Bündel weider Resultater soll liwweren. Eng onbehandelt Ausnam gëtt ausgeléist, wann dëst Element ofgeruff gëtt. chunksize vum ThreadPoolExecutor bitt dës Soumissiounsbudget net, an éischt Python-Versiounen hunn buffersize net.

Ähnlech Artikelen