buffersize Executor.map v Python 3.14 pro velké dávky proxy
Použijte buffersize Executor.map v Python 3.14 k pozastavení spotřeby vstupu, dokud čekají výsledky, nezávisle na max_workers.
max_workers=8 omezuje počet prováděcích vláken. Nezastaví však samostatnou smyčku odesílání, aby pro každý koncový bod v obrovském vstupu vytvořila Future.
Python 3.14 přidává omezenou možnost předčítá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 je stávající synchronní kontrola se síťovými termíny a úklidem; record_result zpracovává její vrácené pozorování. Hodnoty 8 a 24 jsou příkladové rozpočty. seznam bezplatných proxy poskytuje veřejné kandidáty pro koncové body; uchovávejte jejich protokol u každé adresy, aby check_proxy mohl použít správný přenos.
Když se vyrovnávací paměť odesílání zaplní, map pozastaví spotřebu iterovatelného objektu, dokud nejsou výsledky vydány. Platí to i pro generátory.
map stále vydává v pořadí vstupu: pomalá raná kontrola může zadržet dokončené pozdější výsledky a oddálit další vstup. Pro zpracování v pořadí dokončení použijte výslovně omezenou sadu futures, která se doplňuje, jak končí.
Očekávané síťové poruchy řešte uvnitř kontroly, pokud má dávka pokračovat ve vydávání výsledků. Nezpracovaná výjimka se vyvolá při vyzvednutí této položky. chunksize v ThreadPoolExecutor tento rozpočet odesílání neposkytuje a starší verze Pythonu nemají buffersize.