目前我有一个递归函数,我们称之为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
的定义,反之亦然。而我根本不明白如何解决这种循环依赖。
这里有什么想法吗?