buffersize Executor.map v Pythone 3.14 pre veľké dávky proxy
Použite buffersize Executor.map v Pythone 3.14 na pozastavenie spotreby vstupu, kým čakajú výsledky, nezávisle od max_workers.
max_workers=8 obmedzuje počet vykonávacích vlákien. Nezastaví však samostatnú slučku odosielania, aby pre každý koncový bod v obrovskom vstupe vytvorila Future.
Python 3.14 pridáva obmedzenú možnosť predčítania:
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 existujúca synchrónna kontrola so sieťovými termínmi a čistením; record_result spracúva jej vrátené pozorovanie. Hodnoty 8 a 24 sú príkladové rozpočty. zoznam bezplatných proxy poskytuje verejných kandidátov pre koncové body; uchovávajte ich protokol pri každej adrese, aby check_proxy mohol použiť správny prenos.
Keď sa vyrovnávacia pamäť odosielania naplní, map pozastaví spotrebu iterovateľného objektu, kým sa výsledky nevydajú. Platí to aj pre generátory.
map stále vydáva v poradí vstupu: pomalá skorá kontrola môže zadržať dokončené neskoršie výsledky a oddialiť ďalší vstup. Na spracovanie v poradí dokončenia použite výslovne obmedzenú množinu futures, ktorá sa dopĺňa, ako sa končia.
Očakávané sieťové poruchy riešte vnútri kontroly, ak má dávka pokračovať vo vydávaní výsledkov. Neobslúžená výnimka sa vyvolá pri získaní tejto položky. chunksize v ThreadPoolExecutor neposkytuje tento rozpočet odosielania a staršie verzie Pythonu nemajú buffersize.