Я следующий код, который я пытаюсь ускорить:Как ускорить вложенный для петель питона
for alpha in range(-N,N+1):
for beta in range(-N,N+1):
I1 = (alpha+N)+(beta+N)*(2*N+1)
for gamma in range(-N,N+1):
for delta in range(-N,N+1):
if alpha!=gamma or beta!=delta:
J1 = (gamma+N)+(delta+N)*(2*N+1)
temp1 = 0;
for nn in range(0,numphases-1):
R = pi*(sqrt((a[nn+1]*(alpha-gamma)/a[0])**2+((b[nn+1]*(beta-delta)/b[0])**2)))
temp1 += (f[nn+1,mm]-f[nn,mm])*(pi/2)*((a[nn+1]*b[nn+1]))*(fp.besselj(1,R[0,0]))/R[0,0]
Lambda[I1,J1,mm] = temp1[0,0]
для значений N равно> 1.
Я посмотрел на многих примерах распараллеливать его и векторизовать его, но я все еще не уверен, что могу сделать, чтобы ускорить его.
Любая помощь была бы принята с благодарностью!
Проверьте [обзорный сайт кода] (http://codereview.stackexchange.com/). Кроме того, я не знаю, что делает ваш код. Трудно читать. –
Вы на python2.x или python3.x? На python2.x вы можете использовать 'xrange' и получать некоторые ускорения там. В противном случае вы, вероятно, захотите перейти к чему-то вроде «numpy». – mgilson
Возможно, вы могли бы описать, что должен делать этот алгоритм O (n ** 5) (!). – roippi