python实际上,对于占用很大内存的对象,并不会马上释放。举例,a=range(10000*10000),会发现内存飙升一个多G,del a 或者a=[]都不能将内存降下来。。del 可以删除多个变量,del a,b,c,d办法:import gc (garbage...

python实际上,对于占用很大内存的对象,并不会马上释放。
举例,a=range(10000*10000),会发现内存飙升一个多G,del a 或者a=[]都不能将内存降下来。。
del 可以删除多个变量,del a,b,c,d
办法:
import gc (garbage collector)
del a
gc.collect()
马上内存就释放了。
在IPython中用run运行程序时,都是在独立的运行环境中运行,结束之后才将程序运行环境中的结果复制到IPython环境中,因此不会有变量被重复调用的问题。
如果你是指在自己的程序中想删除所有全局变量的话,可以自己编写一个clear函数,通过globals()获取全局变量然后将其中不需要的内容删除,例如下面的程序保留函数,类,模块,删除所有其它全局变量:
def clear():
for key, value in globals().items():
if callable(value) or value.__class__.__name__ == "module":
continue
del globals()[key]
不过程序中应该避免这种对全局变量的依赖。你也可以在IPython下用此函数清空全局变量。
本文标题为:python内存回收的问题


基础教程推荐
- python验证多组数据之间有无显著差异 2023-08-08
- 创建python虚拟环境(在ubuntu16.04中) 2023-09-04
- MySQL数据优化-多层索引 2023-08-11
- Python+OpenCV实战之实现文档扫描 2022-10-20
- Python爬虫爬取属于自己的地铁线路图 2023-08-05
- windows下面使用多版本Python安装指定版本的虚拟环境 2023-09-04
- linux 安装 python3 2023-09-03
- 云服务器Ubuntu更改默认python版本 2023-09-03
- 远程和Ubuntu服务器进行Socket通信,使用python和C#(准备篇) 2023-09-05
- 使用Pycharm创建一个Django项目的超详细图文教程 2022-09-02