Tengo alrededor de 50 carpetas de datos para procesar, y tengo un script ruby que procesa los archivos de una carpeta (la carpeta que procesa se basa en un archivo de configuración .yml). Y una computadora con cuatro CPU.
Me gustaría poder iniciar los 50 procesos, pero solo tengo 4 de ellos ejecutándose activamente en cualquier momento, y tener los otros 46 pausados. Una vez que uno de los procesos finaliza, me gustaría que uno de los procesos pausados no se pause, hasta que se completen los 50. De esa manera, puedo hacer
./super_script.rb > folder_1_log.txt
*edit config.yml*
./super_script.rb > folder_2_log.txt
*edit config.yml*
...
Y concéntrate en otra cosa hasta que el procesamiento haya terminado.
¿Es posible hacer esto? ¿Hay algunos términos para lo que quiero que pueda googlear?
(Otra alternativa sería hacer que super_script sea capaz de multiprocesamiento, tal vez soy un gato asustado por no tomar ese enfoque)
(El sistema operativo es Ubuntu Linux, y la mayor parte del tiempo de la CPU no es ocupado por super_script.rb, sino por otros programas ruby que llama a través del sistema ())