python内存回收的问题
2024-10-09 22:11:39
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下用此函数清空全局变量。
最新文章
- Javascript中构造函数与new命令
- c# 正则表达式用法
- 檢查RAC狀態
- [译]JavaScript检测浏览器前缀
- (转).net webconfig使用IConfigurationSectionHandler自定section
- 数据传输对象(DTO)介绍及各类型实体比较
- 自己动手写spring容器(3)
- 利用Dockerfile构建mysql镜像并实现数据的初始化及权限设置
- C语言程序设计课程总结
- 二分查找算法的java实现
- Java 容器源码分析之 Map
- ipv6下jdbc的连接数据库方式
- fastJson顺序遍历JSON字段(转)
- databus编译: Execution failed for task ':databus-core:databus-core-impl:compileJava'.
- 最长上升子序列 OpenJ_Bailian - 2757 dp模板
- QT学习笔记6:常见的 QGraphicsItem
- JS仿淘宝左侧菜单
- 调试日志——基于stm32的智能声光报警器(一)
- Python中__new__()方法的使用和实例化
- 优秀前端工程师必备: (总结) 清除原生ios按钮样式
热门文章
- ArcGIS API for JavaScript 入门教程[5] 再讲数据——Map类之底图与高程
- Api管家系列(一):初探
- C# XML序列化/反序列化参考
- 暖春许愿季丨i春秋给你送福利
- Python基础(max,min方法)
- [截稿日期] 人机交互与普适计算方向的A、B类国际会议
- ToolbarDemo【Toolbar作为顶部导航栏的简单使用】
- GetTypes Unable to load one or more of the requested types
- kernel 进阶API
- Vue Mixin 与微信小程序 Mixins 应用