Библиотеки параллельной обработки Python - PullRequest
5 голосов
/ 12 января 2010

Похоже, что в Python доступно много разных пакетов , чтобы помочь в параллельной обработке в системе на основе SMP или в кластере. Я заинтересован в создании системы клиент-сервер, в которой сервер поддерживает очередь заданий, а клиенты (локальные или удаленные) подключаются и запускают задания, пока очередь не станет пустой. Из перечисленных выше пакетов, что рекомендуется и почему?

Изменить: В частности, я написал симулятор, который принимает несколько входов и обрабатывает вещи в течение некоторого времени. Мне нужно собрать достаточно образцов из моделирования, чтобы оценить среднее значение в пределах указанного пользователем доверительного интервала. Чтобы ускорить процесс, я хочу иметь возможность запускать симуляции на многих различных системах, каждая из которых отчитывается на сервере через некоторый интервал с собранными образцами. Затем сервер вычисляет доверительный интервал и определяет, нужно ли продолжать процесс клиента. После того как будет собрано достаточное количество образцов, сервер завершает все симуляции клиента, реконфигурирует имитацию на основе прошлых результатов и повторяет процессы.

Учитывая необходимость взаимодействия между клиентским и серверным процессами, я задаюсь вопросом, является ли пакетное планирование жизнеспособным решением. Извините, я должен был быть более ясным для начала.

Ответы [ 4 ]

2 голосов
/ 15 января 2010

Пойдите с ParallelPython .Кажется простым в использовании, и должен обеспечить требуемый интерфейс заданий и очередей.

1 голос
/ 13 января 2010

Также теперь есть две разные оболочки Python вокруг карты / уменьшить фреймворк Hadoop:

http://code.google.com/p/happy/

http://wiki.github.com/klbostee/dumbo

Map / Reduce - хороший шаблон разработки с множеством рецептов для решения общих задач.

Если у вас еще нет кластера, сам Hadoop хорош, поскольку у него есть полное планирование заданий, автоматическое распределение данных по кластеру (например, HDFS) и т. Д.

0 голосов
/ 13 января 2010

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

0 голосов
/ 12 января 2010

Учитывая, что вы пометили свой вопрос «научные вычисления» и упомянули кластер, какая-то оболочка MPI кажется очевидным выбором, если целью является разработка параллельных приложений, как можно догадаться из названия. Опять же, текст в вашем вопросе предполагает, что вы хотите разработать пакетный планировщик. Поэтому я не знаю, какой вопрос вы задаете.

...