Python для нового проекта распределенных вычислений? - PullRequest
1 голос
/ 22 октября 2011

Мне нужно написать программу, требующую большого объема вычислений. Я пытался написать многопоточную версию этой программы, но это занимает слишком много времени. Теперь я планирую расширить до нескольких узлов (возможно, через узлы Amazon EC2).

Я уже знаком с Python. Является ли Python оснащенным каким-либо параллельным модулем жизнеспособным вариантом, если я забочусь о скорости, или мне лучше перейти на какой-нибудь другой фреймворк / язык, такой как Erlang?

Можете ли вы даже написать программу симуляции на Erlang?

Проект больше относится к разделению вычислений, чем к разделению набора данных, поэтому я не рассматривал фреймворки, основанные на сокращении карты

Ответы [ 3 ]

2 голосов
/ 01 мая 2012

dispy - это инфраструктура для распределенных вычислений с Python.Он использует asyncoro, платформу для асинхронного параллельного программирования с использованием сопрограмм, с некоторыми функциями erlang (в широком смысле).Отказ от ответственности: я являюсь автором обеих этих структур.

1 голос
/ 22 октября 2011

Если вы уже знакомы с python, я бы порекомендовал вам продолжать симуляцию на python (и ускорять критические части в C) и использовать Erlang для управления им.Написание симуляции в Эрланге было бы далеко за пределами вашей зоны комфорта (даже лично я бы это сделал).Вы, вероятно, можете повторно использовать части проектов Erlang как Диско-проект или Riak core .Начните свой проект с некоторого неоптимального POC и настройте его итерациями.Это означает, что начните с python, вставьте его в Erlang (возможно, Disco), а затем перемещайте фрагменты, пока вы не будете недовольны производительностью и возможностями.В итоге вы можете получить что угодно, в том числе чистое решение Erlang или исправленный Python в BEAM с использованием NIF или что-нибудь еще, что удовлетворит ваши потребности.

0 голосов
/ 22 октября 2011

Ваша проблема распараллеливается тривиально? Тогда вы можете взглянуть на Elastic Map Reduce вместо EC2.

...