2010-11-03 2 views
0

Скажем, у меня есть список из 10 000 строк строки, которые должны обрабатываться 100 рабочими скриптами.шаблон для нескольких сценариев рабочего процесса для обработки списка данных

Я хотел бы, чтобы многие из 100 скриптов выполнялись синхронно, насколько это возможно.

Как только рабочий сценарий заканчивается одной строкой, он должен обработать следующую доступную строку, которая в настоящее время не обрабатывается другим сценарием рабочего.

Если рабочий сценарий выходит из строя на линии, он пропустит его и перейдет к следующей доступной строке, которая в настоящее время не обрабатывается другим сценарием рабочего.

Рабочий сценарий в любое время может быть недоступен в течение неизвестного времени.

Теперь предположим, что из первых начальных 100 рабочих сценариев любой рабочий сценарий может стать недоступным (либо сбой или слишком длинный с текущими данными), но и через некоторое время станет доступным снова через дорогу. Он может снова стать недоступным и может занять слишком много времени, чтобы снова стать доступным на время обработки 10 000 строк.

Как обрабатывать все 10000 строк с начальными скриптами из 100 рабочих синхронно, но любой из них может стать недоступным и после некоторого неизвестного случайного времени он может снова стать готовым к обработке.

Я бы представлял себе что-то вроде цикла для всех 10 000 строк и еще одного сценария для периодического опроса всех доступных рабочих и запуска этих рабочих синхронно.

Я не уверен, как я подойду к этой проблеме.

ответ

1

producer/consumer pattern очень полезен для ситуаций, подобных этому. Я объяснил это немного больше over here.

При этом, если ваша ситуация действительно такая простая, более простые методы могут быть более уместными, например, разделение данных равномерно.

Кроме того, я предполагаю, что вы не ожидали увидеть 100x ускорение как ваш HW, конечно, не будет поддерживать, что ...

Конечно, если я совершенно неправильно, и вы на самом деле хотите, чтобы обработать каждый строка 100x (т.е. каждый скрипт делает что-то другое), пожалуйста, уточните.

Смежные вопросы