Python 并行处理库

5 投票
4 回答
2909 浏览
提问于 2025-04-15 17:56

Python似乎有很多不同的工具包,可以帮助我们在基于SMP的系统或集群上进行并行处理。我想建立一个客户端-服务器系统,服务器负责维护一个工作队列,客户端(可以是本地的也可以是远程的)连接到服务器并执行工作,直到队列为空。在上面提到的工具包中,哪个比较推荐,为什么呢?

补充一下:我写了一个模拟器,它会接收一些输入并处理一段时间。我需要从这个模拟中收集足够的样本,以便在用户指定的置信区间内估算一个平均值。为了加快速度,我希望能够在许多不同的系统上运行模拟,每个系统会在一定时间间隔内向服务器报告它们收集到的样本。然后,服务器会计算置信区间,并决定客户端的进程是否需要继续。当收集到足够的样本后,服务器会终止所有客户端的模拟,基于过去的结果重新配置模拟,并重复这个过程。

由于需要客户端和服务器之间进行通信,我在想批量调度是否是一个可行的解决方案。抱歉,我一开始没有说得更清楚。

4 个回答

0

你在提问时标记了“科学计算”,并提到了集群,这样看起来你可能想用某种MPI(消息传递接口)工具来开发并行应用程序,这从标题上也能猜到。不过,你问题中的内容又让人觉得你想开发一个批处理调度器。所以我不太清楚你到底想问什么。

1

现在有两个不同的Python工具可以用来操作Hadoop的map/reduce框架:

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

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

Map/Reduce是一种很不错的开发模式,有很多解决常见问题的“食谱”。

如果你还没有自己的集群,Hadoop本身也很不错,因为它有完整的任务调度功能,可以自动把数据分配到集群中的各个地方(也就是HDFS),等等。

2

试试 ParallelPython 吧。这个工具看起来很简单好用,而且应该能提供你想要的任务和队列的功能。

撰写回答