2

我正在编写一个程序来处理几个消耗大量 RAM 的 16 位 TIFF 图像。

如果我打开这样的图像:

import cv2
for i in range(1000):
    img = cv2.imread(file[i])

每个图像数组是否进入内存,或者当我将其分配给新值时它是否被删除?如果它没有被删除,如何在打开新的之前将其删除?

谢谢!

4

2 回答 2

3

对于每次迭代,img都会重新分配,因此垃圾收集器会自动删除旧帧。

于 2013-10-16T21:35:35.440 回答
1

如果由于某种原因解释器没有对数据进行垃圾收集,您可以强制它这样做:

import gc
gc.collect()

但是,仅当您知道存在内存泄漏时才这样做,因为运行它(尤其是循环它!)会减慢您的程序速度,通常最好将内存管理留给解释器。

于 2013-10-16T21:42:07.387 回答