【发布时间】:2010-09-11 14:01:43
【问题描述】:
在 Python 的解释器中是否默认为 sys.stdout 启用输出缓冲?
如果答案是肯定的,有什么方法可以禁用它?
目前的建议:
- 使用
-u命令行开关 - 将
sys.stdout包装在每次写入后刷新的对象中 - 设置
PYTHONUNBUFFERED环境变量 sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
有没有其他方法可以在执行期间以编程方式在sys/sys.stdout 中设置一些全局标志?
【问题讨论】:
-
对于 Python 3 中的“打印”,请参阅this answer。
-
我认为
-u的一个缺点是它不适用于已编译的字节码或以__main__.py文件作为入口点的应用程序。 -
完整的 CPython 初始化逻辑在这里:github.com/python/cpython/blob/v3.8.2/Python/…