2016-01-24 49 views
0

工作,35個值似乎工作蟒蛇numpy.irr()將不超過35值

np.irr([-100.0] + ([25]*35)) 

但35 vaues關閉蟒蛇。

np.irr([-100.0] + ([25]*36)) 

關閉蟒蛇

screenshot

+0

我無法在我的Mac上重現,所以我添加了一個'windows'標籤。你使用的是什麼版本的numpy/python? – cel

+0

版本'1.9.2' – wlbsr

+0

Python 2.7.9 :: Anaconda 2.2.0(64位) – wlbsr

回答

0

我已經在窗戶1.10.4/Python的2.7.3的32位這裏測試,並不能與更大的名單,甚至複製的崩潰(3000項目!),但是我注意到Process Explorer中Python的RAM使用率正在飛漲。

這很有意義,因爲[25] * 36正在分配一個長度的列表,然後將它傳遞給fn,然後計算,然後返回。看起來.irr不支持生成器作爲輸入,如果你想在非常大的迭代器上嘗試這種類型的函數,這有點煩人。在fn完成之後,Numpy似乎並沒有釋放這裏使用的所有內存,這也可能導致問題。

在Anaconda上,您可以指定Numpy是否由英特爾數學核心函數庫(MKL)構建?這是在本地構建的選項,我確實選擇了這個選項。我的理解是MKL用於優化多核。編譯的依賴項(如DLL)中的錯誤可能會在類似於您所看到的過程的完整崩潰中顯示。

對不起,這張貼爲答覆(應該是一個評論,但我不能評論由於< 50聲望)。