调用scipy函数后的内存使用情况

时间:2016-03-15 01:07:29

标签: python numpy memory scipy signal-processing

执行每个语句后,请考虑以下代码的内存使用情况:

import numpy
import scipy.signal
import gc

# memory at this point is ~35mb

a = numpy.ones(10**7)
b = numpy.ones(10**7)

# memory at this point is ~187mb

c = scipy.signal.fftconvolve(a, numpy.flipud(b), mode="full")

# memory usage at this point is 645mb
# given that a,b,c take up about 305mb in total, this is much
# larger than expected

# If we delete a,b,c and garbage collect...

del a,b,c
gc.collect()

# ...the memory usage drops to ~340mb which is a drop of 305mb
# (as expected since that is the size of what we deleted)
# but the remaining memory usage is still 340mb
# which is much larger than the starting value of 35 mb

为什么这个过程使用了这么多额外的内存。 fftconvolve函数是否有泄漏,还是有其他解释?

平台:

  • CPython 3.5.1 x64
  • Scipy 0.17.0(Christoph Golke' s)
  • Numpy + MKL 1.11.0rc1(Cristoph Golke' s)
  • Windows 8.1 x64

0 个答案:

没有答案