logging日志和垃圾回收

logging日志

一、logging日志级别日志一共分成5个等级,从低到高排序

  • (1) DEBUG:详细的信息,通常只出现在诊断问题上
  • (2) INFO:确认一切按预期运行
  • (3) WARNING:一个迹象表明,一些意想不到的事情发生了,或表明一些问题在不久的将来(例如。磁盘空间低”)。这个软件还能按预期工作。
  • (4) ERROR:更严重的问题,软件没能执行一些功能
  • (5) CRITICAL:一个严重的错误,这表明程序本身可能无法继续运行

二、logging日志输出有两种方式记录跟踪,一种输出控制台,另一种是记录到文件中,如日志文件

  • 日志输出到控制台:logging.debug(“可加字符串解释”)
  • 日志输出到文件:可以将日志输出到文件,只需要在函数中设置好输出文件的文件名和写文件的模式。

三、logging日志格式说明

  • logging格式说明:
    %(levelno)s: 打印日志级别的数值
    %(levelname)s: 打印日志级别名称
    %(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]
    %(filename)s: 打印当前执行程序名
    %(funcName)s: 打印日志的当前函数
    %(lineno)d: 打印日志的当前行号
    %(asctime)s: 打印日志的时间
    %(process)d: 打印进程ID
    %(thread)d: 打印线程ID
    %(threadName)s: 打印线程名称
    %(message)s: 打印日志信息

  • 使用格式:
      这个格式可以输出日志的打印时间,是哪个模块输出的,输出的日志级别是什么,以及输入的日志内容。

     format='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s'
    

垃圾回收

一、整形对象池
  数值类型和字符串类型在 Python 中都是不可变的,这意味着你无法修改这个对象的值,每次对变量的修改,实际上是创建一个新的对象

  • 小整形对象池

    (1) 小整形对象池范围: [-5, 256]
    (2) 地址相同 (有空格地址不同
    (3) 短的普通字符串 都会常驻内存

  • 大整形对象池

    (1) 地址不同
    (2) 每一个大整数,均创建一个新的对象。

  • intern机制

    (1) 单个单词,默认开启intern机制,共用对象,引用计数为0,则销毁
    (2) 字符串(含有空格),不可修改,没开启intern机制,不共用对象,引用计数为0,销毁

二、计数机制

  • 应用计数机制的优缺点
    • 优点;
      (1) 简单
      (2) 实时性:一旦没有引用,内存就直接释放了。不用像其他机制等到特定时机。实时性还带来一个好处:处理回收内存的时间分摊到了平时。
    • 缺点;
      (1) 维护引用计数消耗资源
      (2) 循环引用

三、GC模块

  • 垃圾回收机制

    (1) Python中的垃圾回收是以引用计数为主,分代收集为辅。
    (2) 关闭垃圾回收

    gc.disable()
    

    (3) 手动执行代码 让内存释放

    gc.collect()
    
  • 导致引用计数为+1 的情况

    (1) 对象被创建,例如a=23
    (2) 对象被引用,例如b=a
    (3) 对象被作为参数,传入到一个函数中,例如func(a)
    (4) 对象作为一个元素,存储在容器中,例如list1=[a,a]

  • 导致引用计数为 -1 的情况

    (1) 对象的别名被显式销毁,例如del a
    (2) 对象的别名被赋予新的对象,例如a=24
    (3) 一个对象离开它的作用域,例如f函数执行完毕时,func函数中的局部变量(全局变 量不会)
    (4) 对象所在的容器被销毁,或从容器中删除对象

  • 导致引用计数为 0 的情况

    对象的引用计数为0的时候,才会释放
    
  • 查看一个对象的引用计数

    可以查看a对象的引用计数,但是比正常计数大1,因为调用函数的时候传入a,这会让a的引用计数+1
    
  • 触发垃圾回收的三种情况
    (1) 当gc模块的计数器达到阀值的时候,自动回收垃圾
    (2) 调用gc.collect(),手动回收垃圾
    (3) 程序退出的时候,python解释器来回收垃圾

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值