max_workers=8 limitează firele de execuție. Nu împiedică însă o buclă separată de trimitere să creeze un Future pentru fiecare punct final într-o intrare uriașă.

Python 3.14 adaugă o opțiune de citire anticipată limitată:

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 este verificarea sincronă existentă, cu termene de rețea și curățare; record_result gestionează observația returnată. Valorile 8 și 24 sunt bugete exemplu. listă de proxy gratuite oferă candidați publici pentru punctele finale; păstrați protocolul lângă fiecare adresă pentru ca check_proxy să folosească transportul corect.

Când tamponul de trimitere se umple, map suspendă consumul iterabilului până când sunt livrate rezultate. Acest lucru se aplică și generatoarelor.

map livrează în continuare în ordinea intrării: o verificare timpurie lentă poate reține rezultate ulterioare deja finalizate și poate întârzia intrarea suplimentară. Pentru procesare în ordinea finalizării, folosiți un set de futures limitat explicit, reumplut pe măsură ce se termină.

Gestionați eșecurile de rețea așteptate în interiorul verificării dacă lotul trebuie să continue să livreze rezultate. O excepție netratată este ridicată când acel element este preluat. chunksize din ThreadPoolExecutor nu oferă acest buget de trimitere, iar versiunile anterioare de Python nu au buffersize.

Articole similare