我有一个节点树,其中每个节点都有一个 id(节点号)、一个子节点列表和一个债务指标。然后给我一个节点列表,我要找到它的债务。为此,我使用递归函数。
这一切都很好,但我想加快这个过程。我一直在研究多处理,但是每次尝试时,与根本不使用其他进程相比,计算时间都会增加(进程数越高,运行时间越长)。
由于试图理解许多不同的示例,我的代码看起来像是垃圾,所以我发布了这个伪代码。
class Node:
id = int
children = int[]
debth = int
function makeNodeTree() ...
function find(x, node):
for c in node.children:
if c.id == x: return c
else:
if find(x, c) != None: return result
return None
function main():
search = [nodeid, nodeid, nodeid...]
timerstart
for x in search: find(x, rootNode)
timerstop
timerstart
<split list over number of processes>
<do some multiprocess magic>
<get results>
timerstop
compare the two
我已经尝试了各种不同的树大小,看看是否有任何收益,但我还没有找到这样的案例,这让我觉得我做错了什么。我想我要的是使用多处理来进行这种遍历并提高性能的示例/方式。
我知道有很多方法可以组织节点以使这项任务变得容易,但我想检查可能的(?)性能提升,如果有可能的话。