Skip to main content
 首页 » 编程设计

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

2025年05月04日10sky-heaven

如何使用 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()