使用单个池调用递归函数

时间:2014-08-31 04:22:06

标签: python multiprocessing

目前我有一个递归函数,我们称之为build_node,它构建了一个二叉树。计算函数的时间可能会有所不同,因此线程池模式在这里很好。

我想知道如何在这种情况下使用multiprocessing.Pool。天真的实现不起作用。

import time, multiprocessing

pool = multiprocessing.Pool()

def build_node(dummy=0):
     # complex computations
     time.sleep(1)

     # exit condition
     if dummy == 3:
         return 42

     # inserting nodes
     result = {}
     for i in xrange(4):
         results[i] = pool.apply_async(build_node, [dummy + 1]).get()
     return result

 if __name__ == '__main__':
     print pool.apply_async(build_node).get()

问题是multiprocessing.Pool实例pool需要查看函数build_node的定义,反之亦然。而我根本不明白如何解决这种循环依赖。

这里有什么想法吗?

0 个答案:

没有答案