1

我需要编写一个计算密集型模拟程序。我尝试编写该程序的多线程版本,但它花费了太多时间。现在我计划扩展到多个节点(可能通过 Amazon EC2 节点)。

我已经熟悉 Python。如果我关心速度,Python配备一些并行模块是一个可行的选择,还是我最好选择其他一些框架/语言,比如 Erlang?

你甚至可以用 Erlang 写一个模拟程序吗?

该项目更多是关于划分计算而不是划分数据集,所以我没有考虑基于map reduce的框架

4

3 回答 3

2

dispy是一个使用 Python 进行分布式计算的框架。它使用 asyncoro,这是一个使用协程进行异步并发编程的框架,具有 erlang(广义而言)的一些特性。免责声明:我是这两个框架的作者。

于 2012-05-01T05:51:09.627 回答
1

如果您已经熟悉 python,我建议您在 python 中进行模拟(并在 C 中加速关键部分)并使用 Erlang 来管理它。在 Erlang 中编写模拟将远远超出您的舒适区(即使我个人也会这样做)。您可能可以将部分 Erlang 项目重用为Disco 项目Riak 核心。从一些次优的 POC 开始您的项目并在迭代中对其进行调整。这意味着从 python 开始,将其嵌入到 Erlang(可能是 Disco),然后移动位,直到您对性能和功能不满意为止。您最终可以得到任何东西,包括纯 Erlang 解决方案或使用 NIF 在 BEAM 中修改 Python 或任何其他满足您需求的东西。

于 2011-10-22T15:12:23.343 回答
0

你的问题是微不足道的并行化吗?然后你可能想看看Elastic Map Reduce而不是 EC2。

于 2011-10-22T04:03:51.207 回答