盘点Python(续)

1、python 中写日志

使用 loguru 模块,

from loguru import logger
logger.add('logs/z_project.log',
level='DEBUG',
format='{time:YYYY-MM-DD HH:mm:ss} - {level} - {file} - {line} - {message}',
rotation="10 MB")
logger.info('可以写日志了')

 

 

from loguru import logger

@logger.catch
def test():
'a' + 1

报错了,报错信息记录在日志中:

2、协程  比线程快

协程又叫纤程、微线程 。协程是为非抢占式多任务产生子程序的计算机组件 。协程允许不同入口点在不同位置暂停或开始,简单来说,协程就是可以暂停执行的函数 。

协程原理:记录一个函数的上下文栈帧,协程调度切换时会将记录的上下文保存,在切换回来时进行调取,恢复原有的执行内容,以便从上一次执行位置继续执行 。

优点:
协程完成多任务占用计算资源很少;
由于协程的多任务切换在应用层完成,因此切换开销少;
协程为单线程程序,无需进行共享资源同步互斥处理 。
缺点:
协程的本质是一个单线程,无法利用计算机多核资源 。

线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位 。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源 ( 如程序计数器、一组寄存器和栈 ),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源 。线程间通信主要通过共享内存,上下文切换很快,资源开销较少,但相比进程不够稳定容易丢失数据。

协程是一种用户态的轻量级线程,协程的调度完全由用户控制 。协程拥有自己的寄存器上下文和栈 。协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈,直接操作栈则基本没有内核切换的开销,可以不加锁的访问全局变量,所以上下文的切换非常快。没有生命周期。

一个线程可以多个协程,一个进程也可以单独拥有多个协程;线程进程都是同步机制,而协程则是异步;协程能保留上一次调用时的状态,每次过程重入时,就相当于进入上一次调用时的状态。



 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值