У меня есть список / очередь из 200 команд, которые мне нужно запустить в оболочке на сервере Linux.
Я хочу, чтобы одновременно выполнялось не более 10 процессов (из очереди). Некоторые процессы завершатся за несколько секунд, другие - намного дольше.
Когда процесс завершится, я хочу, чтобы следующая команда «выскочила» из очереди и была выполнена.
У кого-нибудь есть код для решения этой проблемы?
Дальнейшая разработка:
Есть 200 работ, которые нужно выполнить, в какой-то очереди. Я хочу, чтобы одновременно работало не более 10 штук. Когда поток завершает часть работы, он должен запросить очередь для следующей части работы. Если в очереди больше нет работы, поток должен умереть. Когда все потоки исчезли, это означает, что вся работа была выполнена.
Фактическая проблема, которую я пытаюсь решить, - это использование imapsync
для синхронизации 200 почтовых ящиков со старого почтового сервера на новый почтовый сервер. Некоторые пользователи имеют большие почтовые ящики и занимают много времени для синхронизации, другие имеют очень маленькие почтовые ящики и быстро синхронизируются.