并行化python for循环

时间:2013-11-25 15:38:07

标签: python for-loop multiprocessing

我试图在python中并行化一些代码。在串行运行我的代码需要大约24小时,但是,有一个for循环,其中每次迭代独立于前一次迭代,因此这是并行化的理想情况。我试图用我的代码实现的一个简单示例如下,

import scipy as sci
from multiprocessing import Pool

def mycode(args):
  for x in range(0,2000)
    y = sci.fft(data[x,:],axis=1)
    output[x,:]=y
  return output

if __name__=="__main__":
  pool=Pool(processes = 8)
  output= pool.map(mycode(args),2000)  

然而,从顶部看,我可以看到虽然python生成了9个python进程,但只有一个实际上使用了任何CPU能力或内存。所有其他人都是0%。使用带有for循环的Pool的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

只要此数据变量已定义为全局,这应该可以。

import scipy as sci
from multiprocessing import Pool

def mycode(x):
    y = sci.fft(data[x,:],axis=1)
    return y

if __name__=="__main__":
  pool=Pool(processes = 8)
  output= pool.map(mycode,range(2000))