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}")
Create a free account and build your private vault. Share publicly whenever you want.