buffersize của Executor.map trong Python 3.14 cho lô proxy lớn
Dùng buffersize của Executor.map trong Python 3.14 để tạm dừng việc tiêu thụ đầu vào trong khi kết quả chờ, độc lập với max_workers.
max_workers=8 giới hạn số luồng thực thi. Tuy nhiên nó không ngăn một vòng gửi riêng tạo Future cho từng điểm cuối trong đầu vào khổng lồ.
Python 3.14 bổ sung tùy chọn đọc trước có giới hạn:
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 là kiểm tra đồng bộ hiện có, với thời hạn mạng và dọn dẹp; record_result xử lý quan sát mà nó trả về. Các giá trị 8 và 24 là ngân sách ví dụ. danh sách proxy miễn phí cung cấp ứng viên công khai cho các điểm cuối; giữ giao thức của chúng cùng mỗi địa chỉ để check_proxy dùng đúng phương thức vận chuyển.
Khi bộ đệm gửi đầy, map tạm dừng tiêu thụ đối tượng lặp cho đến khi kết quả được trả ra. Điều này cũng áp dụng cho generator.
map vẫn trả theo thứ tự đầu vào: một kiểm tra sớm chậm có thể giữ kết quả phía sau đã xong và làm chậm đầu vào tiếp theo. Để xử lý theo thứ tự hoàn thành, dùng một tập futures được giới hạn rõ ràng và được nạp lại khi chúng xong.
Xử lý các lỗi mạng dự kiến bên trong kiểm tra nếu lô phải tiếp tục trả kết quả. Ngoại lệ không được xử lý sẽ được ném khi mục đó được lấy ra. chunksize trong ThreadPoolExecutor không cung cấp ngân sách gửi này, và các phiên bản Python trước không có buffersize.