max_workers=8 mengehadkan benang pelaksanaan. Namun ia tidak menghalang gelung penyerahan berasingan daripada mencipta Future untuk setiap titik hujung dalam input besar.

Python 3.14 menambah pilihan baca awal yang terhad:

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 ialah semakan segerak sedia ada, dengan had masa rangkaian dan pembersihan; record_result mengendalikan pemerhatian yang dikembalikannya. Nilai 8 dan 24 ialah belanjawan contoh. senarai proksi percuma menyediakan calon awam untuk titik hujung; kekalkan protokol mereka dengan setiap alamat supaya check_proxy boleh menggunakan pengangkutan yang betul.

Apabila penimbal penyerahan penuh, map menjeda penggunaan iterable sehingga hasil dikeluarkan. Ini juga terpakai kepada penjana.

map masih mengeluarkan mengikut susunan input: semakan awal yang perlahan boleh menahan hasil kemudian yang sudah selesai dan melambatkan input selanjutnya. Untuk pemprosesan mengikut susunan selesai, gunakan set futures yang terhad secara jelas dan diisi semula apabila selesai.

Kendalikan kegagalan rangkaian yang dijangka di dalam semakan jika kelompok perlu terus mengeluarkan hasil. Pengecualian yang tidak dikendalikan dilemparkan apabila item itu diambil. chunksize dalam ThreadPoolExecutor tidak menyediakan belanjawan penyerahan ini, dan versi Python yang lebih awal tiada buffersize.

Artikel berkaitan