Python多处理最小跨度树-整个程序循环
我正在尝试使用Python中的多处理来加速针对大量数据的最小生成树算法。该树正在使用Prim的方法。简言之,我有一个程序,为每个类别创建一个加权矩阵,然后进入例程以生成最小跨度树,在这个例程中我有以下代码Python多处理最小跨度树-整个程序循环,python,loops,multiprocessing,Python,Loops,Multiprocessing,我正在尝试使用Python中的多处理来加速针对大量数据的最小生成树算法。该树正在使用Prim的方法。简言之,我有一个程序,为每个类别创建一个加权矩阵,然后进入例程以生成最小跨度树,在这个例程中我有以下代码 if __name__=='__main__': m=Manager() q=Queue() #wt=partial(_lightest_edge_weight, graph=graph, visited=visited) p=
if __name__=='__main__':
m=Manager()
q=Queue()
#wt=partial(_lightest_edge_weight, graph=graph, visited=visited)
p=Pool()
#go to each visited edge
for each in visited:
q.put(each)
q.put('DONE')
#set up multiprocessing for edges in queue
p.apply_async(target=_lightest_edge_weight, args=(graph,visited,q,))
但是,每当我这样做时(我也尝试过使用Process plus start和join),打开的新进程都会重新启动整个程序,而不仅仅是根据
\u light\u edge\u weight
运行队列中的项目。当整个程序循环而不仅仅是目标子程序时,有什么想法吗?谢谢。如果您有任何代码在之外运行,如果uuuu name uuuu=='\uuuu main uuu'
,那就是您的问题。如果没有,我需要比你提供的更多的代码。我同意@Veedrac。给自己做个做作的例子来证明这一点。旁注:我不记得apply_async有目标kwd。你确定这是一个有效的代码吗?不知道你的“大量数据”有多大,也要考虑优化算法。也许还值得尝试一种不同的算法。例如,我发现Kruskal算法的实现比Prim算法的实现快约15倍