Python

ThreadPoolExecutor for I/O-Bound Work

admin by @admin ADMIN
1h ago
May 31, 2026
Public
0 0 up · 0 down Sign in to vote
Parallelize I/O-bound tasks (HTTP requests, file reads, DB queries) without writing thread management code. The default thread count is min(32, os.cpu_count() + 4) — usually the right call.
Python
Raw
from concurrent.futures import ThreadPoolExecutor, as_completed
import requests

def fetch(url: str) -> tuple[str, int]:
    return url, requests.head(url, timeout=10).status_code

urls = [f"https://httpbin.org/status/{n}" for n in (200, 404, 500, 200)]

with ThreadPoolExecutor(max_workers=8) as pool:
    # Submit + collect as they finish (order != submit order)
    futures = {pool.submit(fetch, u): u for u in urls}
    for f in as_completed(futures):
        url, status = f.result()
        print(f"{status} {url}")

# Simpler when you want input order preserved:
with ThreadPoolExecutor(max_workers=8) as pool:
    for url, status in pool.map(fetch, urls):
        print(f"{status} {url}")
Tags

Save your own code snippets

Create a free account and build your private vault. Share publicly whenever you want.