Python

Параллельная загрузка через ThreadPoolExecutor

Algonexys · 07.08.2026 · 👁 0

Ускорение сетевых (I/O-bound) задач без asyncio: пул потоков и обработка результатов по мере готовности.

Код

from concurrent.futures import ThreadPoolExecutor, as_completed

import requests

URLS = [
    "https://httpbin.org/delay/1",
    "https://httpbin.org/status/200",
    "https://httpbin.org/uuid",
]


def fetch(url):
    response = requests.get(url, timeout=10)
    return url, response.status_code


with ThreadPoolExecutor(max_workers=8) as pool:
    futures = {pool.submit(fetch, url): url for url in URLS}
    for future in as_completed(futures):
        try:
            url, status = future.result()
            print(f"{status} {url}")
        except Exception as exc:
            print(f"Ошибка {futures[future]}: {exc}")