Решения тех проблем, с которым мне приходилось сталкиваться.

четверг, 14 июля 2011 г.

"Пул" процессов в bash

Интересный способ имитации пула процессов найден с помощью команды xargs.

Известно, что эта команда может выполнить некую процедуру для каждого элемента из входного списка (stdin). Оказывается, она способна выполнять процедуру не последовательно для каждого элемента, а поддерживать выполнение заданного количество копий. Т.е. если на входе у нас 1 2 3 4 5 6 7 8 9 10 и мы хотим одновременное выполнение 4 процессов, то xargs сразу же запустит 4 процесса для 1 2 3 4 и как только кто-то из них завершит выполнение запустит новый уже с аргументом 5 и так далее.

Очень удобно, на самом деле, в некоторых случая. В общем, все просто - опция --max-procs.