对于C++,我们可以使用OpenMP进行并行编程;但是,OpenMP 不适用于 Python。如果我想并行我的 python 程序的某些部分,我该怎么办?
代码的结构可以认为是:
solve1(A)
solve2(B)
其中 solve1
和 solve2
是两个独立的函数。如何并行运行这种代码而不是顺序运行以减少运行时间?代码是:
def solve(Q, G, n):
i = 0
tol = 10 ** -4
while i < 1000:
inneropt, partition, x = setinner(Q, G, n)
outeropt = setouter(Q, G, n)
if (outeropt - inneropt) / (1 + abs(outeropt) + abs(inneropt)) < tol:
break
node1 = partition[0]
node2 = partition[1]
G = updateGraph(G, node1, node2)
if i == 999:
print "Maximum iteration reaches"
print inneropt
其中 setinner
和 setouter
是两个独立的函数。那就是我想并行的地方……
原文由 ilovecp3 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以使用 多处理 模块。对于这种情况,我可能会使用处理池:
这将产生可以为您完成通用工作的进程。由于我们没有通过
processes
,它将为您机器上的每个 CPU 核心生成一个进程。每个 CPU 内核可以同时执行一个进程。如果您想将列表映射到单个函数,您可以这样做:
不要使用线程,因为 GIL 会锁定对 python 对象的任何操作。