终端/空闲关闭时,python是否释放代码中使用的内存?

时间:2018-08-09 11:56:07

标签: python memory-management

当python会话/终端被强制关闭或杀死时,被占用的内存是否会在自动释放的代码中列出其他数据结构(我的意思是垃圾回收)?

2 个答案:

答案 0 :(得分:0)

是的,附加到该终端的Python进程会释放所有获取的内存。这不仅适用于Python,还适用于终端中的独立进程(无依赖项)。

这在使用GPU时尤其重要,因为许多模块(例如tensorflow / Pytorch)都依赖于对GPU的完全控制。

答案 1 :(得分:0)

是的,假设其为父进程。如果杀死父进程,则应释放所有内存。

在父级仍在运行但内存需求随时间变化的情况下,Python的垃圾收集器将启动。例如:您从将大文件读入列表开始,并且在处理列表中的项目时正在删除项目。在这种情况下,您应该看到内存使用量有所减少,但是它永远不会降至创建列表之前的水平(即使您del整个列表也是如此)。这是因为python会尝试“超前思考”,并且不会释放一些内存,以防您的进程再次要求它。

另一个有趣的案例是使用python's multiprocessing lib。如果未正确关闭池,则子进程使用的内存可能不会释放。

我认为您只是关心打开REPL,进行一些操作并杀死外壳时会发生什么。在这种情况下,内存会释放回来。