zoukankan      html  css  js  c++  java
  • python内存回收的问题

    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入坑级
    nginx配置文件详解
    nginx看端口使用情况
    linux安装nginx
    linux安装jdk1.7
    linux设置tomcat开机启动
    redis master配置了密码进行主从同步
    linux搭建mysql 5.6.28
    linux搭建redis数据库
    找出一组数里出现频率最高的3个数(1.3)
  • 原文地址:https://www.cnblogs.com/wenBlog/p/10337371.html
Copyright © 2011-2022 走看看