Me gustaría ejecutar varias instancias de program.py simultáneamente, mientras que limita el número de instancias que se ejecutan al mismo tiempo (por ejemplo, a la cantidad de núcleos de CPU disponibles en mi sistema) Por ejemplo, si tengo 10 núcleos y tengo que hacer 1000 ejecuciones de program.py en total, solo se crearán y ejecutarán 10 instancias en cualquier momento dado.Multiprocesamiento en Python al tiempo que limita el número de procesos en ejecución
He intentado usar el módulo de multiprocesamiento, multiprocesamiento y uso de colas, pero no hay nada que me parezca que se presta para una implementación fácil. El mayor problema que tengo es encontrar la forma de limitar el número de procesos que se ejecutan simultáneamente. Esto es importante porque si creo 1000 procesos a la vez, se vuelve equivalente a una bomba de tenedor. No necesito los resultados devueltos por los procesos de forma programática (salen al disco), y todos los procesos se ejecutan independientemente el uno del otro.
¿Puede alguien darme sugerencias o un ejemplo de cómo podría implementar esto en python, o incluso bash? Publicaba el código que he escrito hasta el momento usando colas, pero no funciona como debería y puede que ya esté en el camino equivocado.
Muchas gracias.
¿Has probado [grupos de procesos de Python] (http://docs.python.org/library/multiprocessing.html#module-multiprocessing.pool)? – C2H5OH
La forma más sencilla de hacerlo es crear un programa "controlador" que cree el 'multiprocesamiento.pool' y engendre los hilos del trabajador (program.py), reasignando el trabajo cuando finalicen las instancias. – jozzas
Gracias, intentaré esto; en mi primer intento, por alguna razón, llegué a la conclusión de que el multiprocesamiento no era lo que quería, pero ahora parece correcto. Entonces, en este caso, los hilos de trabajo simplemente generarían program.py (como un hilo? Con subproceso.Popen)? ¿Podría publicar un ejemplo aproximado o una implementación de plantilla que pueda seguir? – steadfast