Вычислительный кластер Python - PullRequest
7 голосов
/ 21 октября 2009

Можно ли создать кластер python, написав сервер telnet, затем передавая команды по telnet и выводя туда-сюда? Кто-нибудь получил лучшую идею для вычислительного кластера Python? PS. Желательно для Python 3.x, если кто-нибудь знает, как.

Ответы [ 7 ]

17 голосов
/ 21 октября 2009

Python wiki содержит очень полный список библиотек вычислительных кластеров Python и инструментов . Вам может быть особенно интересен Parallel Python .

Редактировать: Есть новая библиотека, которая ИМХО особенно хороша для кластеризации: execnet . Это маленький и простой. И, похоже, в нем меньше ошибок, чем, скажем, в стандартном модуле multiprocessing.

15 голосов
/ 21 октября 2009

Вы можете увидеть большинство сторонних пакетов, доступных для Python 3, в списке здесь ; отношение к кластерным вычислениям mpi4py - большинство других инструментов распределенных вычислений, таких как pyro, все еще работают только на Python-2, но MPI является ведущим стандартом для кластерных распределенных вычислений и хорошо его изучает (у меня нет прямого опыта использования mpi4py с Python 3, но пока, по слухам, это хорошая реализация).

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

Нет реальной добавленной стоимости в прокате ваших собственных (как говорит Атвуд, не изобретайте колесо, если только ваша цель не состоит в том, чтобы просто лучше понять колеса! -) - используйте одно из надежных, проверенных, широко распространенных решений, уже протестирован, отлажен и оптимизирован от вашего имени! -)

5 голосов
/ 21 октября 2009

Посмотрите на эти

http://www.parallelpython.com/

http://pyro.sourceforge.net/

Я использовал оба, и оба отлично подходят для распределенных вычислений
более подробный список опций смотрите http://wiki.python.org/moin/ParallelProcessing

и если вы хотите автоматически выполнить что-то на удаленной машине, лучшей альтернативой для telnet является ssh, как в http://pydsh.sourceforge.net/

4 голосов
/ 21 октября 2009

Какие вещи ты хочешь делать? Возможно, вы захотите проверить hadoop . Бэкэнд, тяжелая работа выполняется в Java, но имеет интерфейс Python, так что вы можете писать скрипты Python для создания и отправки ввода, а также обрабатывать результаты.

2 голосов
/ 06 июля 2011

Если вам нужно написать административные сценарии, взгляните также на библиотеку ClusterShell Python или / и ее параллельную оболочку clush . Это также полезно при работе с наборами узлов ( man nodeset ).

1 голос
/ 24 октября 2013

Я думаю, IPython.parallel - это путь. Я использую это широко в течение последних полутора лет. Это позволяет вам работать в интерактивном режиме с любым количеством рабочих узлов. Если вы работаете в AWS, StarCluster - отличный способ быстро и легко запустить IPython.parallel и работать с таким количеством узлов EC2, сколько вы можете себе позволить. (Он также может автоматически устанавливать Hadoop и множество других полезных инструментов, если это необходимо.) Есть несколько хитростей в его использовании. (Например, вы не хотите отправлять большие объемы данных через сам интерфейс IPython.parallel. Лучше распространять сценарий, который будет обрабатывать фрагменты данных на каждом движке отдельно.) Но в целом я нашел быть удивительно простым способом распределенной обработки ( WAY лучше, чем Hadoop!)

0 голосов
/ 21 октября 2009

"Можно ли сделать кластер Python"

Да.

Я люблю вопросы да / нет. Что-нибудь еще, что вы хотите знать?

(Обратите внимание, что в Python 3 еще мало сторонних библиотек, поэтому вы можете остаться с Python 2 в данный момент.)

...