Python でスクリプトを作成しましたが、最後まで実行するのに 20 時間以上かかります。
私のコードはかなり大きいので、簡略化したものを投稿します。
コードの最初の部分:
flag = 1
mydic = {}
for i in mylist:
mydic[flag] = myfunction(i)
flag += 1
mylist
には 700 を超えるエントリがあり、呼び出すたびmyfunction
に約 20 秒間実行されます。
そこで、並列プログラミングを使用して反復を 2 つのグループに分割し、同時に実行できないかと考えていました。それは可能で、以前よりもハーフタイムが必要ですか?
コードの 2 番目の部分:
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 を呼び出して結果を返す関数であるため、簡略化できません。
より速くするために変更する方法について何か提案はありますか。