[問題] for 迴圈 平行化

看板Python作者 (Dirac)時間8年前 (2016/06/07 16:39), 編輯推噓0(008)
留言8則, 3人參與, 最新討論串1/2 (看更多)
小弟最近需要加快迴圈速度 第一個想到的就是平行化 這裡是小弟的程式碼 (創立矩陣) 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 的使用文件實在是有點複雜... 感謝各位版友 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.184.65 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1465288758.A.825.html

06/07 16:53, , 1F
你第一個想到的應該是優化這醜陋的code
06/07 16:53, 1F

06/07 16:55, , 2F
1. 這裡真有必要用np.arange? 試試內建的generator
06/07 16:55, 2F

06/07 16:55, , 3F
2. 第二層迴圈看起來和第一層無關, 提出去計算一次就好
06/07 16:55, 3F

06/07 16:56, , 4F
^的條件
06/07 16:56, 4F

06/07 17:27, , 5F
花時間的地方是wave吧?
06/07 17:27, 5F

06/08 21:08, , 6F
這個問題會建議你直接用 numba 的 @jit decorator
06/08 21:08, 6F

06/08 21:09, , 7F
通常會有顯著的性能提升。
06/08 21:09, 7F

06/08 21:10, , 8F
http://goo.gl/uNdlP8 可參考網頁上面的範例
06/08 21:10, 8F
文章代碼(AID): #1NLeWsWb (Python)
文章代碼(AID): #1NLeWsWb (Python)