python 实时打印控制台输出信息
我们在使用docker部署flask的时候,需要使用进行调试,但是控制台却不是实时输出的结果。
项目场景:
我们在使用docker部署flask的时候,需要使用docker logs -f mycontainer
进行调试,但是控制台却不是实时输出的结果。
原因分析:
提示:这里填写问题的分析:
例如:Handler
发送消息有两种方式,分别是 Handler.obtainMessage()
和 Handler.sendMessage()
,其中 obtainMessage
方式当数据量过大时,由于 MessageQuene
大小也有限,所以当 message
处理不及时时,会造成先传的数据被覆盖,进而导致数据丢失。
解决方案:
提示:因为Python有控制台的缓存机制
python中标准错误(std.err)和标准输出(std.out)的输出规则:
- 标准输出默认需要缓存后再输出到屏幕。
- 标准错误则直接打印到屏幕。
例如test.py
import sys
sys.stdout.write("a")
sys.stderr.write("b")
sys.stdout.write("a")
sys.stderr.write("b")
无论运行多少次都是输出CMD>python test.py
bbaa
原因是python缓存机制,虽然stderr和stdout默认都是指向屏幕的,但是stderr是无缓存的,程序往stderr输出一个字符,就会在屏幕上显示一个。而stdout是有缓存的,只有遇到换行或者积累到一定的大小,才会显示出来。
python会默认缓冲其输出,所以想要无缓冲输出,那么加一个“-u” 参数即可:python -u test.py

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)