python在linux上输出日志不展示怎办?
写了个监测服务器的脚本,加入宝塔的定时任务后print输出不及时。但是过一段时间,还是有输出....
百思得其解!应该是被缓存了。
像下面这样 似乎和缓存相关 -u能禁止缓存
Python 会有一个缓存,导致输出不会及时地保存到 log 文件中,只需要通过 一个参数 -u 就可以取消 这种缓冲。
python3 -u /www/wwwroot/wnce/jiance.py
原因是python缓存机制,其实python中的print语句就是调用了sys.stdout.write(),而stdout是有缓存的,只有遇到换行或者积累到一定的大小,才会显示出来。
-u 参数的使用:python命令加上-u参数后会强制使用stderr,不通过缓存直接打印到屏幕。
虽然stderr和stdout默认都是指向屏幕的,但是stderr是无缓存的,程序往stderr输出一个字符,就会在屏幕上显示一个;这就是为什么上面的会最先显示两个stderr的原因。