typestar

Pools de procesos en Python

Repartir trabajo limitado por CPU entre núcleos de verdad.

from concurrent.futures import ProcessPoolExecutor


def triturar(n):
    return sum(i * i for i in range(n))


def principal():
    cargas = [2_000_000, 3_000_000, 4_000_000]
    with ProcessPoolExecutor() as pool:
        resultados = list(pool.map(triturar, cargas))
    return resultados  # trabajo limitado por CPU repartido en núcleos reales


if __name__ == "__main__":
    totales = principal()

Cómo funciona

  1. ProcessPoolExecutor esquiva el GIL con procesos.
  2. pool.map distribuye las llamadas pesadas a triturar.
  3. La guarda de __main__ es obligatoria para el spawn.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
16
Caracteres a escribir
374
Tokens
75
Ritmo de tres estrellas
110 tpm

Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 41 segundos.

Escribe este fragmento

Paso 3 de 4 en Hilos y procesos; paso 30 de 53 en Python pythónico.

← Anterior Siguiente →