[問題] 使用multiprocessing的計算結果傳值問題
各位請問(我直接貼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
→
09/02 14:32,
2年前
, 1F
09/02 14:32, 1F
→
09/02 14:32,
2年前
, 2F
09/02 14:32, 2F
→
09/02 14:32,
2年前
, 3F
09/02 14:32, 3F
推
09/02 15:56,
2年前
, 4F
09/02 15:56, 4F
→
09/03 13:15,
2年前
, 5F
09/03 13:15, 5F