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

看板Python作者時間8年前 (2016/06/08 01:07), 8年前編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《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) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 119.14.174.160 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1465319225.A.0BB.html ※ 編輯: Fungshui (119.14.174.160), 06/08/2016 01:10:21 寫錯了改一下... ※ 編輯: Fungshui (211.75.118.108), 06/08/2016 08:58:15

06/16 23:31, , 1F
比較建議用多執行緒
06/16 23:31, 1F
文章代碼(AID): #1NLlyv2x (Python)
討論串 (同標題文章)
文章代碼(AID): #1NLlyv2x (Python)