我在 python 中有一个脚本,但运行到结束需要 20 多个小时。
由于我的代码很大,我将发布一个简化的代码。
代码的第一部分:
flag = 1
mydic = {}
for i in mylist:
mydic[flag] = myfunction(i)
flag += 1
mylist
有 700 多个条目,每次我调用myfunction
它运行大约 20 秒。
所以,我在想是否可以使用并行编程将迭代分成两组并同时运行。这可能吗?我会比以前需要一半时间吗?
第二部分代码:
mymatrix = []
for n1 in range(0,flag):
mat = []
for n2 in range(0,flag):
if n1 >= n2:
mat.append(0)
else:
res = myfunction2(mydic(n1),mydic(n2))
mat.append(res)
mymatrix.append(mat)
所以,如果mylist
有 700 个条目,我想创建一个 700x700 的矩阵,它是上三角矩阵。但是myfunction2()
每次需要大约30秒。我不知道我是否也可以在这里使用并行编程。
我无法简化myfunction()
andmyfunction2()
因为它们是我调用外部 api 并返回结果的函数。
您对我如何更改它以使其更快有什么建议吗?