Python 解释器是否将内存返回给操作系统?

问题描述

更新。 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

结果:

enter image description here

那么python解释器是否将内存返回给操作系统?

解决方法

memory_profiler 显示正在运行的代码的资源使用情况,而不是解释器的资源使用情况。