Python 3.14 Executor.map buffersize nagy proxy-kötegekhez
Használja a Python 3.14 Executor.map buffersize paraméterét, hogy a bemenet fogyasztása szüneteljen, amíg az eredmények várnak, a max_workers-től függetlenül.
max_workers=8 korlátozza a végrehajtó szálakat. Azt viszont nem akadályozza meg, hogy egy külön beküldő ciklus Future-t hozzon létre minden végponthoz egy hatalmas bemenetben.
A Python 3.14 korlátozott előreolvasási lehetőséget ad hozzá:
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 a meglévő szinkron ellenőrzés hálózati határidőkkel és takarítással; record_result kezeli a visszaadott megfigyelést. A 8 és 24 érték példa-költségvetés. ingyenes proxy lista nyilvános jelölteket ad a végpontokhoz; tartsa meg a protokolljukat minden címmel, hogy a check_proxy a megfelelő átvitelt használhassa.
Amikor a beküldési puffer megtelik, a map szünetelteti az iterálható fogyasztását, amíg eredmények nem érkeznek. Ez a generátorokra is vonatkozik.
A map továbbra is bemeneti sorrendben ad: egy lassú korai ellenőrzés visszatarthatja a már elkészült későbbi eredményeket és késleltetheti a további bemenetet. A befejezési sorrendű feldolgozáshoz használjon kifejezetten korlátozott futures-halmazt, amelyet a befejeződésük szerint tölt fel.
A várható hálózati hibákat az ellenőrzésen belül kezelje, ha a kötegnek folytatnia kell az eredmények adását. A kezeletlen kivétel akkor dobódik, amikor az az elem lekerül. A ThreadPoolExecutor chunksize paramétere nem ad ilyen beküldési költségvetést, és a korábbi Python-verziókból hiányzik a buffersize.