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.