我经常编写简单的优化例程,看起来像这样:
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更简单的版本。
答案 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,这可能就是你想要的实例(单机,多处理器,而不是机器集群)。