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