Python 2.7 有效地管理内存和python处理
我需要读取一个2.5gb大的文件。我使用以下syntx:Python 2.7 有效地管理内存和python处理,python-2.7,numpy,Python 2.7,Numpy,我需要读取一个2.5gb大的文件。我使用以下syntx: import numpy as np limit=4269*352*288*3 mat1=np.zeros(limit, dtype='uint8') mat1=np.fromfile("path/to/file", "uint8", limit) 我现在需要重塑此阵列: mat_new=np.zeros([4269, 288, 352, 3], dtype='uint8') mat_new=np.transpose(np.reshap
import numpy as np
limit=4269*352*288*3
mat1=np.zeros(limit, dtype='uint8')
mat1=np.fromfile("path/to/file", "uint8", limit)
我现在需要重塑此阵列:
mat_new=np.zeros([4269, 288, 352, 3], dtype='uint8')
mat_new=np.transpose(np.reshape(mat1,[4269,3,288,352]), [0,2,3,1])
在我的4gb ram(i7第二代系统)上,这大约需要35秒。
不管怎样,我都可以让它更快。因为这只是我计划的开始,还有更复杂的事情要做。从今以后,我不需要mat1
此外,我只读取了文件的一半,因为Python给了我“已达到最大内存”错误
读取1.25GB数据大约需要18秒 它大约为70MB/s,即速度可能受到磁盘i/O性能的限制 如果你不需要整个文件;您可以使用: 为避免内存错误,请使用就地操作,例如:
mat_new = mat1.transpose(0,2,3,1) # no data copying
同样,删除不必要的
np.zeros()
您不需要首先创建零数组,您可以删除np.zeros()
行。从文件读取数据速度较慢,请分析您的代码以确定np.fromfile()
的时间开销。读取1.25GB数据大约需要18秒!再过12-14秒就可以重塑!
mat_new = mat1.transpose(0,2,3,1) # no data copying