matplotlib直方图中的内存泄漏

时间:2013-05-31 04:54:05

标签: python memory-leaks numpy matplotlib histogram

运行以下代码将导致内存使用迅速增加。

import numpy as np
import pylab as p
mu, sigma = 100, 15
x = mu + sigma*np.random.randn(100000)
for i in range(100):
    n, bins, patches = p.hist(x, 5000)

然而,当用直接调用numpy直方图方法将调用替换为pylab时,内存使用量是恒定的(它的运行速度也明显加快)。

import numpy as np
mu, sigma = 100, 15
x = mu + sigma*np.random.randn(100000)
for i in range(100):
    n, bins = np.histogram(x, 5000)

我的印象是pylab正在使用numpy直方图函数。某处肯定有错误......

1 个答案:

答案 0 :(得分:2)

Matplotlib生成图表。 NumPy没有。将p.show()添加到您的第一个代码中,以查看工作的进展情况。

import numpy as np
import pylab as p
mu, sigma = 100, 15
x = mu + sigma*np.random.randn(100000)
n, bins, patches = p.hist(x, 5000)
p.show()

您可能希望先使用较小的号码np.random.randn(100000)来快速查看内容。

修改

创建相同的绘图100次真的没有意义。