typestar

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

  1. ThreadPoolExecutor administra un conjunto fijo de hilos.
  2. pool.map reparte la función sobre cada URL.
  3. Los hilos brillan cuando se trata de esperar a la red.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 1 de 4 en Hilos y procesos; paso 28 de 53 en Python pythónico.

← Anterior Siguiente →