Re: [問題] for 迴圈 平行化

作者: Fungshui   2016-06-08 01:07:02
※ 引述《Dirac (Dirac)》之銘言:
: 小弟最近需要加快迴圈速度
: 第一個想到的就是平行化
: 這裡是小弟的程式碼 (創立矩陣)
: j=0
: for w in np.arange(Omega_start,Omega_end,Omega_grid):
: k=0
: for t in np.arange(Timearray[int(len(Timearray)/20*TI)],Timearray[int(len(Timearray)/20*TF-1)],h*Time_grid):
: a[k][j] = wave(w,t)
: k+=1
: j+=1
: #####
: a[k][j] 是一個矩陣 , wave是一個定義函數 ,
: 主要想要讓for w 這邊用平行化速度加快
: 請問一下有什麼tutorial可以看嗎?
: multiprocessing 的使用文件實在是有點複雜...
: 感謝各位版友
可能沒寫很漂亮,但還是可以給你參考一下
import multiprocessing as mp
import numpy as np
from itertools import product, izip
def f(a, n, x, y):
a[n] = x * y
if __name__ == '__main__':
l = range(1, 5)
l2 = range(10, 20)
it = list(product(l, l2))
arr_len = len(l) * len(l2)
arr = mp.Array('d', np.zeros(arr_len))
tasks = []
for n, (x, y) in izip(range(arr_len), it):
p = mp.Process(target=f, args=(arr, n, x, y))
tasks.append(p)
p.start()
p.join()
a = np.array(arr).reshape(len(l), len(l2)).T
print(a)
作者: brian41005   2016-06-16 23:31:00
比較建議用多執行緒

Links booklink

Contact Us: admin [ a t ] ucptt.com