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
ProcessPoolExecutoresquiva el GIL con procesos.pool.mapdistribuye las llamadas pesadas atriturar.- La guarda de
__main__es obligatoria para el spawn.
Palabras clave y builtins usados aquí
asdefforiflistrangereturnsumwith
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.
Paso 3 de 4 en Hilos y procesos; paso 30 de 53 en Python pythónico.