1

我经常编写如下所示的简单优化例程:

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 中实现最大效率的好方法?也许这足以成为社区问题的标准?

这个问题似乎是使用 Python 多处理解决令人尴尬的并行问题的更简单版本。

4

1 回答 1

0

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

似乎有许多并行化 python 的方法,使用 MPI 或 SMP。python wiki http://wiki.python.org/moin/ParallelProcessing上有一个潜在候选人列表

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

于 2013-02-14T11:57:27.297 回答