numpy处理大数据造成的MemoryError问题

1、问题。在使用siamese网络构建pair时,大约生成 3亿*2*250 的三维list,处理list期间大约占120G内存,如果直接np.array()会报memoryerror,服务器内存为380G,swap空间为32G,OS为Ubuntu16.04,python为2.7.11,numpy为1.13.1。

2、解决方案。拆解pair为pair left和pair right。

     pair left:3亿* 250的二维list,约占60G内存,转为np期间约占300G内存,存储npy大约30G,期间需要注意del list和np用于释放内存。

     pair right:3亿* 250的二维list,约占60G内存,转为np期间约占300G内存,存储npy大约30G,期间需要注意del list和np用于释放内存。

     pair label:3亿* 1的二维list,处理流程同上,相对较小。

3、参考。

     python下numpy数组的最大取值范围?这里max其实并非上限。

     有关 list 内存释放的小技巧。

     使用gc、objgraph干掉python内存泄露与循环引用!

4、问题。使用np.save()处理pair right报错,IOError: 74795622750 requested and 8801504232 written,

  但pair left可执行。

5、解决方案。可能由于storage TEMPDIR空间不够的原因。调整del顺序之后,继续尝试运行。

6、参考。

     IOError: 74795622750 requested and 8801504232 written。

     Numpy中数据的常用的保存与读取方法。

                                                                         numpy处理大数据造成的MemoryError问题_第1张图片

 

 

你可能感兴趣的:(Code管理)