Python
Параллельная загрузка через ThreadPoolExecutor
Ускорение сетевых (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}")