У меня есть около 50 папок данных для обработки, и у меня есть скрипт ruby, который обрабатывает файлы папки (какая папка обрабатывается на основе файла конфигурации .yml). И компьютер с четырьмя процессорами в нем.
Я хотел бы иметь возможность запустить 50 процессов, но только 4 из них активно работают в любое время, а остальные 46 приостановлены. Когда один из процессов завершится, я бы хотел, чтобы один из приостановленных процессов стал безостановочным, пока все 50 не будут завершены. Таким образом, я могу сделать
./super_script.rb > folder_1_log.txt
*edit config.yml*
./super_script.rb > folder_2_log.txt
*edit config.yml*
...
И сосредоточьтесь на чем-то другом, пока обработка не закончится
Можно ли сделать это? Есть ли какие-то термины для того, что я хочу, чтобы я мог гуглить?
(Другой альтернативой было бы сделать super_script способным к многопоточности - возможно, я пугающий кот из-за того, что не придерживаюсь этого подхода)
(Операционная система - Ubuntu Linux, и большую часть процессорного времени занимает не super_script.rb, а другие программы ruby, которые он вызывает через system())