在python中使用多处理并行化递归代码

时间:2013-01-31 07:01:26

标签: python parallel-processing multiprocessing

如何使用python多处理来并行化以下代码

def func(a,i):
   if (a>i):
      func(a-1,i)
      func(a-5,i)
   else :
      print a
编辑:一旦父进程退出,所有子子进程也退出吗?

编辑2:

我已经实现了以下代码,但它无法正常工作。你能找到错误吗?

p=[]
def func(a,i):
 if a>i :
   proc=Process(target=func,args=(a-1,i,))
   p.append(proc)
   proc=Process(target=func,args=(a-5,i,))
   p.append(proc)

 else :
   print a

if _name_=='_main_':
   proc=Process(target=func,args=(100,25,))
   p.append(proc)
   for x in p:
     x.start()
     x.join()

上面的代码仅针对(100,25)执行,而不是针对子进程执行,即使子进程已添加到列表中。

1 个答案:

答案 0 :(得分:0)

在代码开头分配的变量没有值保留在函数中,因此您需要在函数中使用全局变量之前向其添加全局变量。 将您的代码更改为:

p=[]
def func(a,i):
    global p
    if a>i :
        proc=Process(target=func,args=(a-1,i,))
        p.append(proc)
        proc=Process(target=func,args=(a-5,i,))
        p.append(proc)


    else :
        print a

if _name_=='_main_':
   global p
   proc=Process(target=func,args=(100,25,))
   p.append(proc)
   for x in p:
     x.start()
     x.join()