max_workers=8 bajariladigan oqimlarni cheklaydi. Lekin katta kirishda alohida yuborish siklining har bir so'nggi nuqta uchun Future yaratishini to'xtatmaydi.

Python 3.14 cheklangan oldindan o'qish variantini qo'shadi:

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 tarmoq muddatlari va tozalash bilan mavjud sinxron tekshiruv; record_result uning qaytargan kuzatuvi bilan ishlaydi. 8 va 24 qiymatlari namuna byudjetlari. bepul proksi ro'yxati so'nggi nuqtalar uchun ommaviy nomzodlar beradi; check_proxy to'g'ri transportdan foydalanishi uchun har bir manzil bilan ularning protokolini saqlang.

Yuborish buferi to'lganda, map natijalar berilmaguncha takrorlanuvchi obyektni iste'mol qilishni to'xtatadi. Bu generatorlarga ham tegishli.

map hanuzgacha kirish tartibida beradi: sekin erta tekshiruv tugallangan keyingi natijalarni ushlab, keyingi kirishni kechiktirishi mumkin. Tugallanish tartibida ishlash uchun tugagach to'ldiriladigan aniq cheklangan futures to'plamidan foydalaning.

Agar partiya natijalar berishni davom ettirishi kerak bo'lsa, kutilayotgan tarmoq nosozliklarini tekshiruv ichida hal qiling. Qayta ishlanmagan istisno o'sha element olinganda ko'tariladi. ThreadPoolExecutor dagi chunksize bu yuborish byudjetini bermaydi, eski Python versiyalarida esa buffersize yo'q.

O'xshash maqolalar