简单的并行科学编程

时间:2013-02-14 11:51:16

标签: python multiprocessing

我经常编写简单的优化例程,看起来像这样:

def createinstance(n):
    while(True):
        #create some instance called instance
        yield instance



loopno = 100000
n= 100
min = 0
for i in xrange(loopno):
    for inst in createinstance(n):
        value = foo(inst)
        if (value < min):
            min = value
            print min

我希望能够使用我机器上的所有核心来执行此操作。

一种非常简单的方法就是将范围分成几部分,然后将它们分配到核心并在最后收集结果。

更好的方法是让核心在空闲时请求一批实例。

在python中解决这个问题以获得最大效率的好方法是什么?也许这足以成为一个社区问题?

这个问题似乎是Solving embarassingly parallel problems using Python multiprocessing更简单的版本。

1 个答案:

答案 0 :(得分:0)

关于标准的Python安装,多处理模块似乎是您想要的,http://docs.python.org/2/library/multiprocessing.html中的示例案例看起来很容易适应您的情况。如果内存不是问题,那么简单地将范围分割为N个处理器将是最有效的选择,因为进程之间没有通信。

使用MPI或SMP似乎有很多方法可以并行化python。在python wiki http://wiki.python.org/moin/ParallelProcessing

上有一个潜在的候选人列表

并行Python http://www.parallelpython.com支持SMP,这可能就是你想要的实例(单机,多处理器,而不是机器集群)。