Python之缓存刷新
Python之缓存刷新
有些童鞋写了python脚本在linux执行,发现pingt打印的内容并不是预想的一样直接输出,不能实时获取python脚本输出日志,而是在脚本执行完成后才输出,这是啥子原因呢?
其实这是python缓冲区的问题
在我们调用print后,并不是立即就打印的,一般会先将内容发送到缓冲区,然后再打印,如果缓冲区没满,不会打印,如果你想立即看到,就需要刷新缓冲区
主动调用刷新是最安全方式,对于耗时比较长的python脚本,可以实时获取日志信息
案例1
1 |
|
该实验会每隔一秒打印一个数字,输出会自动的刷新缓存,因为print默认时以‘\n’结尾,遇到换行就会显示出来
案例2
1 |
|
该实验在前9秒不会打印数据,只会在第10秒的时候把之前的数据一并打印出来,因为用空格作为print的分隔符,不会触发缓存刷新
案例3
1 |
|
该输出就会每隔一秒打印一个数字,因为代码主动刷新了缓存
案例4
1 |
|
当然了print本身也提供了flush参数,通过设置也可以主动刷新
案例5
可以在调用python脚本时,添加==-u==参数,会强制其标准输出也同业标准错误一样,不通过缓存直接打印到屏幕
小记录:在有的python版本中加不加-u参数好像都是一样的,不起作用,具体没搞太明白,不知道是否是版本存在问题
蚂蚁🐜再小也是肉🥩!
Python之缓存刷新
http://heibanbai.com.cn/posts/9b13e994/
“您的支持,我的动力!觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”
微信支付
支付宝支付