Pools de hilos en Python
Correr trabajo limitado por IO a través de un pool de hilos.
from concurrent.futures import ThreadPoolExecutor
import urllib.request
urls = [
"https://example.com/a",
"https://example.com/b",
"https://example.com/c",
]
def fetch_length(url):
with urllib.request.urlopen(url, timeout=5) as res:
return url, len(res.read())
with ThreadPoolExecutor(max_workers=3) as pool:
sizes = dict(pool.map(fetch_length, urls))
Cómo funciona
ThreadPoolExecutoradministra un conjunto fijo de hilos.pool.mapreparte la función sobre cada URL.- Los hilos brillan cuando se trata de esperar a la red.
Palabras clave y builtins usados aquí
asdefdictlenreturnwith
El intento, en números
- Líneas
- 17
- Caracteres a escribir
- 356
- Tokens
- 82
- Ritmo de tres estrellas
- 105 tpm
Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 47 segundos.
Paso 1 de 4 en Hilos y procesos; paso 28 de 53 en Python pythónico.