Python 3.14 Executor.map buffersize vir groot proxy-bondels
Gebruik Python 3.14 Executor.map buffersize om die invoerverbruik te pouse terwyl resultate wag, onafhanklik van max_workers.
max_workers=8 beperk die uitvoerende drade. Dit keer nie dat n aparte indieningslus vir elke eindpunt in n groot invoer n Future skep nie.
Python 3.14 voeg n begrensde vooruitlees-opsie by:
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 is die bestaande sinchrone kontrole met netwerksperdatums en opruiming; record_result hanteer die waarneming wat dit teruggee. Die waardes 8 en 24 is voorbeeldbegrotings. Die gratis proxylij verskaf openbare kandidate vir eindpunte; hou hul protokol by elke adres sodat check_proxy die regte vervoer kan gebruik.
Wanneer die indieningsbuffer vol word, pouseer map die verbruik van die itereerbare totdat resultate opgelewer word. Dit geld ook vir generators.
Map lewer steeds in invoerorde op: n stadige vroeë kontrole kan voltooide latere resultate vashou en verdere invoer vertraag. Vir verwerking in voltooiingsorde, gebruik n eksplisiet begrensde stel futures wat aangevul word soos hulle klaarmaak.
Hanteer verwagte netwerkfoute binne die kontrole as die bondel moet aanhou resultate oplewer. n Onbehandelde uitsondering word opgewerp wanneer daardie item opgehaal word. ThreadPoolExecutor se chunksize bied nie hierdie indieningsbegroting nie, en vroeëre Python-weergawes het nie buffersize nie.