[英]Memory usage difference between Windows and Ubuntu for a Numpy array
就像標題所說,我看到Windows和Ubuntu之間的numpy數組的內存使用量有很大的不同。
這是復制此問題的簡單代碼:
import numpy as np
import joblib
a = [1]*1000
b = [a for i in range(1000)]
np_arr = np.array(b)
joblib.dump(np_arr, 'arr.h5')
如果我在Windows 10計算機上運行此代碼,則arr.h5
的大小為3907KB 。
但是我在Ubuntu 18.04上運行它,它是7812KB
主要問題是我正在處理大型數據集,並且代碼在具有16GB的Windows計算機上可以正常運行,但是在32GB的Ubuntu上卻出現內存錯誤
是的,這是Windows和Linux之間的區別...
numpy中的默認整數是np.int_
,它映射到C long
, 請參閱docs 。 C標准沒有確切指定long
的大小,只是它至少為32位 (4字節)。 實際大小取決於編譯器和cpu體系結構 。 在numpy Bug Tracker上已經有關於此問題的討論。
通過顯式設置整數類型可以避免該問題:
np_arr = np.array(b, dtype=np.int32)
如果知道數組將保留的最小和最大值,則可以選擇較小的整數類型,例如int16或uint8,從而擺脫困境。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.