buffersize Executor.map Python 3.14 untuk batch proxy besar
Gunakan buffersize Executor.map Python 3.14 untuk menjeda konsumsi input selama hasil menunggu, terlepas dari max_workers.
max_workers=8 membatasi thread yang mengeksekusi. Namun itu tidak mencegah loop pengiriman terpisah membuat Future untuk setiap endpoint dalam input raksasa.
Python 3.14 menambahkan opsi baca-depan yang dibatasi:
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 adalah pemeriksaan sinkron yang sudah ada, dengan tenggat jaringan dan pembersihan; record_result menangani pengamatan yang dikembalikannya. Nilai 8 dan 24 adalah anggaran contoh. daftar proxy gratis menyediakan kandidat publik untuk endpoint; pertahankan protokolnya pada setiap alamat agar check_proxy dapat memakai transport yang tepat.
Saat buffer pengiriman penuh, map menjeda konsumsi iterable hingga hasil diberikan. Ini juga berlaku untuk generator.
map tetap memberikan hasil dalam urutan input: pemeriksaan awal yang lambat dapat menahan hasil berikutnya yang sudah selesai dan menunda input selanjutnya. Untuk pemrosesan sesuai urutan selesai, gunakan kumpulan futures yang dibatasi secara eksplisit dan diisi ulang saat selesai.
Tangani kegagalan jaringan yang diperkirakan di dalam pemeriksaan jika batch harus terus memberikan hasil. Pengecualian yang tidak ditangani dimunculkan saat item itu diambil. chunksize pada ThreadPoolExecutor tidak menyediakan anggaran pengiriman ini, dan versi Python yang lebih lama tidak memiliki buffersize.