buffersize ของ Executor.map ใน Python 3.14 สำหรับชุดพร็อกซีขนาดใหญ่
ใช้ buffersize ของ Executor.map ใน Python 3.14 เพื่อหยุดการบริโภคอินพุตระหว่างรอผลลัพธ์ โดยไม่ขึ้นกับ max_workers
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