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

标签 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) 而不是针对子流程执行,即使子流程已添加到列表中也是如此。

最佳答案

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

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 - 在 python 中使用多处理并行化递归代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14620158/

相关文章:

python - 将新向量添加到PCA新空间数据python

c# - Task.WaitAny 当有多个任务同时完成时

python - python 3.6 multiprocessing.Pool()开始使用Windows的速度非常慢

multithreading - 对并行Haskell感到困惑

Python池映射和选择进程数

python - 对 Python `processes` 的 `multiprocessing.Pool` 参数的澄清

python - 如何避免循环导入

python - 在Python中如何检查空字符串是否在单词中评估为true?

python - 运行 .detector (openCV) 时内核死机

c++ - VS 自动并行化