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 არ აქვს.

დაკავშირებული სტატიები