問題の解決策を求めてウェブを探しましたが、実際に役立つものは見つかりませんでした。私の問題は、マルチプロセッシングを実装してプログラムを高速化したいということです。関数getSVJJPrice
はかなり高速です。ただし、Kのサイズは約 1000 であるため、コード全体がかなり遅くなります。for
したがって、ループを並列化する方法があるのだろうか?コードは以下にあります。
def func2min(x,S,expiry,K,r,prices,curr):
bid = prices[:,0]
ask = prices[:,1]
C_omega = [0]*len(K)
w = [0]*len(K)
for ind, k in enumerate(K):
w[ind] = 1/np.abs(bid[ind] - ask[ind])
C_omega[ind] = getSVJJPrice(x[0],(x[1] + x[0]**2)/(2*x[2]),
x[2],x[3],x[4],x[5],x[6],x[7],x[8],x[9],S[ind],k,r[ind],expiry[ind],
curr[ind])
right = np.sum(w * (np.subtract(C_omega, np.mean(prices,axis=1)))**2)
print right
#if right < 10:
# print '\n \n func = ', right
if math.isnan(right):
right = 1e12
return right
これを調べてくれた人に感謝します!
よろしくお願いします、
ビクター