python读取大量图片到内存


import os, cv2

pp='data/train'
name_list = os.listdir(pp)
name_list.sort()
nl=[]
for i in name_list:
  print i
  for j in os.listdir(pp+'/'+i):
    im = cv2.imread(pp+'/'+i+'/'+j)
    nl.append(im)
cv2.imshow('w', im)
cv2.waitKey()

我用上面的代码读10G图片到内存,程序为什么会占用60G内存呢?

这个问题可能有几个原因。首先,如果图像总是大小为 10GB,那么读入内存后它们就会占用 10GB 的内存。其次,在读入这些图像后,程序可能会将它们转换成某种其他的图像格式,比如说 float 或者 RGB 等,这样会导致内存占用更多。此外,程序可能还会创建某些数组和缓存来保存这些图像,这也会导致内存占用增加。

如果想要减少程序占用的内存,可以试着做一些如下的优化:

  • 每读入一张图片,就将其处理完后立即释放内存。
  • 不要将图像转换成非必要的格式。
  • 尽量减少创建中间变量和缓存的数量。