看板 Python 關於我們 聯絡資訊
各位請問(我直接貼code了), --- import numpy as np,numpy_financial as npf import multiprocessing as mp def calc_irr(cf,ans,j): ans[j]=npf.irr(cf[j]) return r=0.9 u=np.array([1]*5) cf=np.float32(np.array([[0,2,3,4,5,6],[0,1,2,3,4,5],[0,5,4,3,2,1],[0,7,6,5,4,3]])) cf[:,0]=-r*cf[:,1:].dot(u.transpose()) ans_irr=[0.]*len(cf) with mp.Pool(8) as pool: for j in range(len(cf)): pool.apply_async(calc_irr,args=(cf,ans_irr,j)) pool.close() pool.join() print(ans_irr) --- 以上是已經簡化過的例子, 我實際的例子是要算大量的irr,因此我想到用multiprocessing 可是,我好像無法把計算irr的結果存進ans_irr且帶出來? (但是我若自己直接執行 calc_irr,如: calc_irr(cf,ans_irr,0),我是可以在ans_irr[0]看到計算結果的。 請問,我可以怎麼做,讓irr結果被存下來? 謝謝~~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.159.178.43 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1630563682.A.DCF.html
aassdd926: Process 會開新的儲存空間,你要return 回來 09/02 14:32
aassdd926: 如果要access原本的空間,查一下我記得multiprocessin 09/02 14:32
aassdd926: g 可以share memory 的 09/02 14:32
remia81: https://i.imgur.com/66gEWqh.png 資料切4份而已 09/02 15:56
leolarrel: 請學習: "Inter-Process Communication" 09/03 13:15