对每个递归步骤使用多重处理

时间:2019-05-02 12:20:24

标签: python recursion multiprocessing

我的要求是生成列表允许的组合。下面的代码是满足我需求的简化版本。

def getChild(tupF):
    if len(tupF) <= 60:
        for val in range(1,10):     #in actual requirement, it is not a fixed range, but some complex processing to determing the list which need to be appended

            t=list(tupF)      #I am converting a tuple to list and after appending it, back to tuple as if I just handle as list, some how it didn't work
            t.append(val)
            getChild(tuple(t))
            t=[]
    else:
        print(tupF)


tup = ()
getChild(tup)

但是,由于级别数很高(60),而且我的每一个组合都是完全独立的,因此我想使此代码成为多进程。

我尝试添加

            t.append(val)
            tmpLst.append(tuple(t)) 
            t=[]
        if __name__ == '__main__':
            pool = Pool(processes=3)
            pool.map(getChild,tmpLst)

但是这没有用,因为我的工作进程正在尝试进一步细分。就我而言,我认为子流程不会爆炸,因为一旦父流程调用了一组子流程,我可以终止父流程,因为所有所需的信息都在我要传递给的元组中子进程。

请让我知道此问题是否适合多处理,如果可以,请提供有关如何使其成为多处理的指导,以便减少计算时间。我没有编写多处理代码的经验,因此,如果您可以指出一个相关的示例,那就太好了。谢谢。

0 个答案:

没有答案