Python 3.14 Executor.map buffersize suurte puhverserveri partiide jaoks
Kasutage Python 3.14 Executor.map buffersize'i, et peatada sisendi tarbimine tulemuste ootamise ajal, sõltumata max_workersist.
max_workers=8 piirab täitmiseks kasutatavaid lõime. See ei takista aga eraldi esitamistsüklil luua Future'i iga lõpp-punkti jaoks tohutus sisendis.
Python 3.14 lisab piiratud eelneva lugemise valiku:
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 on olemasolev sünkroonne kontroll võrgu tähtaegade ja koristamisega; record_result käsitleb selle tagastatud vaatlust. Väärtused 8 ja 24 on näidis-eelarved. tasuta puhverserverite nimekiri pakub lõpp-punktidele avalikke kandidaate; hoidke nende protokoll iga aadressi juures, et check_proxy saaks kasutada õiget transporti.
Kui esitamisepuhver täitub, peatab map itereeritava tarbimise kuni tulemuste väljastamiseni. See kehtib ka generaatorite kohta.
map väljastab endiselt sisendi järjekorras: aeglane varajane kontroll võib hoida kinni juba valmis hilisemad tulemused ja edasist sisendit edasi lükata. Lõpetamise järjekorras töötlemiseks kasutage selgesõnaliselt piiratud futures-hulka, mida täidetakse lõppemise järel.
Käsitlege oodatavaid võrgu tõrkeid kontrolli sees, kui partii peab jätkama tulemuste väljastamist. Töötlemata erind tõstatatakse selle üksuse hankimisel. ThreadPoolExecutori chunksize ei paku seda esitamiseelarvet ja varasematel Pythoni versioonidel puudub buffersize.