如何释放分配给嵌套numpy数组的内存?

时间:2018-09-04 14:05:48

标签: python numpy memory-leaks

我有一个超大的numpy数组,分配给它的内存再也不会释放。我只是演示我的情况,以便您自己查看问题。

分配给简单numpy数组的内存将在删除该变量后立即释放(如下面将其删除的内容):

import numpy as np

X = np.ones((40000, 40000))

X.nbytes
12800000000

del(X)

当我运行上面的代码时,所有12 GB内存将立即释放。但是如果嵌套了numpy数组,情况就会变得复杂:

import numpy as np
import random

foo = np.array([np.array([np.ones((256,)) for j in range(random.randint(100, 150))]) for i in range(40000)])

sum(f.nbytes for f in foo)
10240481280

del(foo)

现在,即使您明确运行gc.collect(),也不会释放10 GB的内存。你们有什么线索吗?

PS :环境:Ubuntu + Python 2.7 + numpy 1.15.1

0 个答案:

没有答案