问题描述
更新。 memory_profiler 显示正在运行的代码的资源使用情况,而不是解释器。
我想弄清楚 python 解释器是否将内存返回给操作系统。我读到一些 Python 进程会保持内存分配,稍后将其用于新数据。但是 memory_profiler 显示正在返回内存。我很困惑。
我这样做:
memprof.py
import time
from memory_profiler import profile
def func2():
lst = list(range(1_000_000))
time.sleep(10)
@profile()
def func1():
lst = list(range(1_000_000))
func2()
time.sleep(10)
if __name__ == '__main__':
aa = func1()
运行:
mprof run memprof.py
输出:
Line # Mem usage Increment Occurences Line Contents
============================================================
11 38.3 MiB 38.3 MiB 1 @profile()
12 def func1():
13 77.0 MiB 38.6 MiB 1 lst = list(range(1_000_000))
14 77.3 MiB 0.3 MiB 1 func2()
15 77.3 MiB 0.0 MiB 1 time.sleep(10)
要查看基于时间的内存使用情况,请运行:
mprof plot
结果:
那么python解释器是否将内存返回给操作系统?
解决方法
memory_profiler 显示正在运行的代码的资源使用情况,而不是解释器的资源使用情况。