multiprocessing_pool
SKILL.md
multiprocessing_pool
multiprocessing.Pool crea procesos Python separados que evitan el GIL, permitiendo paralelismo real para tareas CPU-bound como procesamiento de imagen, OCR y análisis de textura.
When to use
Usar en el worker_pool_agent para tareas CPU-bound que no requieren GPU: procesamiento de documentos, ELA, análisis de textura, normalización OCR. Los workers GPU usan CUDA streams en su lugar.
Instructions
- Configurar Celery con prefork pool (por defecto):
app.conf.worker_pool = 'prefork' app.conf.worker_concurrency = os.cpu_count() - Para tareas fuera de Celery:
from multiprocessing import Pool with Pool(processes=4) as pool: results = pool.map(process_document, images) - Configurar
maxtasksperchild=100para evitar memory leaks. - Usar
concurrent.futures.ProcessPoolExecutorcomo alternativa moderna. - No compartir modelos ML entre procesos; cada proceso carga su propia copia.
- Configurar
worker_max_memory_per_child = 200000(KB) para auto-restart.
Notes
- El prefork pool de Celery ya usa multiprocessing internamente; no crear pools adicionales dentro de tasks.
- Para I/O-bound tasks, usar gevent o eventlet pool en lugar de prefork.
- El número de workers CPU debe ser <= número de cores disponibles.
Weekly Installs
1
Repository
davidcastagnetoa/skillsFirst Seen
10 days ago
Installed on
mcpjam1
claude-code1
replit1
junie1
windsurf1
zencoder1