max_workers=8 ги ограничува извршните нишки. Но не спречува посебна јамка за поднесување да создаде Future за секоја крајна точка во огромен влез.

Python 3.14 додава ограничена опција за однапред читање:

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 е постоечката синхрона проверка со мрежни рокови и чистење; record_result го обработува вратеното набљудување. Вредностите 8 и 24 се примерни буџети. бесплатна листа на прокси обезбедува јавни кандидати за крајни точки; чувајте го нивниот протокол со секоја адреса за check_proxy да го користи правилниот пренос.

Кога баферот за поднесување ќе се наполни, map го паузира трошењето на итерабилниот објект додека не се дадат резултати. Ова важи и за генераторите.

map сè уште дава по редослед на влезот: бавна рана проверка може да ги задржи завршените подоцнежни резултати и да го одложи понатамошниот влез. За обработка по редослед на завршување, користете експлицитно ограничено множество futures што се дополнува како што завршуваат.

Очекуваните мрежни дефекти обработете ги внатре во проверката ако серијата треба да продолжи да дава резултати. Необработен исклучок се крева кога тој елемент се зема. chunksize во ThreadPoolExecutor не го дава овој буџет за поднесување, а постарите верзии на Python немаат buffersize.

Поврзани статии