대규모 프록시 배치를 위한 Python 3.14 Executor.map buffersize
Python 3.14 Executor.map buffersize를 사용하면 결과를 기다리는 동안 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 집합을 사용하세요.
배치가 계속 결과를 내야 한다면 예상되는 네트워크 실패를 검사 내부에서 처리하세요. 처리되지 않은 예외는 해당 항목을 꺼낼 때 발생합니다. ThreadPoolExecutor의 chunksize 이 제출 예산을 제공하지 않으며, 이전 Python 버전에는 buffersize 이 없습니다.