【发布时间】:2019-11-19 12:07:44
【问题描述】:
由于性能问题,我想在 python 中并行运行我的函数:
import multiprocessing as mp
source_nodes = [10413173, 10414530, 10414530, 10437199]
sink_nodes = [10420346, 10438770, 10438711, 10414530, 10436258]
path =[]
def createpath(source,sink):
for i in source:
for j in sink:
path = path + list(nx.all_simple_paths(Directed_G,i,j))
return path
据我了解,我必须给出 1 个可迭代的应用函数。但我的想法是做类似的事情:
results = [pool.apply(createpath, args=(source_nodes, sink_nodes))]
然后不要给任何可迭代对象给applyfunction 我设法让它工作,但我认为它不能并行运行。
你认为我应该在第一个循环中包含 apply 函数吗?
【问题讨论】:
-
如果你想并行运行你的循环,你可以尝试在 C++ 中使用类似于 openMP 的工具,例如,Pymp。这使您可以为每个核心提供其迭代部分,并为所有核心提供并行循环。您应该使用归约来获得结果。
-
哦,谢谢,但我想避免安装任何其他外部工具,因为我知道我在由其他部门管理的虚拟机上运行此代码。
-
那么,也许你可以尝试通过在参数中给出循环范围来实现类似的目标。然后每个核心将只处理整个循环中它自己的部分。
-
谢谢你的评论,你能不能多发展一点你的想法,我觉得这对我来说有点难以理解
标签: python pandas parallel-processing multiprocessing