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

在python中使用多处理并行化递归代码,python,parallel-processing,multiprocessing,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,))

如何使用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)执行,而不针对子流程执行,即使子流程被添加到列表中。

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

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()

为什么要将其并行化?慢吗?或者出于教育原因?您以前使用过Python的多处理库吗?你的问题是关于如何使用图书馆的一般性问题吗?或者您想知道并行化递归函数是否安全?结果的打印顺序是否重要?我想学习实现递归调用库。结果的顺序无关紧要。进程不共享
p
,因此您的代码只启动一个子进程。我建议您寻找一种使用队列而不是递归的方法。