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.

Kapcsolódó cikkek