小编fwi*_*llo的帖子

Python 无法在无缓冲模式下工作

我正在纠结 python 的问题。我在 Red Hat Enterprise Linux Server 版本 7.1 (Maipo) 上使用了 Python 2.7.13 和 Python 3.6.0。为了监视进程输出,我想tail -f实时查看 STDOUT 和 STDERR。这里的关键字是无缓冲输出。互联网上的许多建议都说使用python -u ...或 环境变量 PYTHONUNBUFFERED 像PYTHONUNBUFFERED=1 python ...stdbuf -e0 -o0 python ...。然而,以下测试脚本没有任何作用。

import sys
import time
while(True):
   print("Test String")
   time.sleep(1);
Run Code Online (Sandbox Code Playgroud)

对于所有不同的命令,我总是有缓冲的输出。即使当我想使用 STDERR 时。它仍然是缓冲的,这真的让我很困惑,因为默认情况下 STDERR 应该是不缓冲的。使用sys.stdout.flush()orsys.stderr.flush()也没有完成这项工作。flush=True当在内部使用时,print()它会按预期工作。

我正在寻找一种不需要编辑代码的解决方案,因为我无法编辑所有程序以获得无缓冲并立即刷新输出。我怎样才能实现这个目标?

期待您的答复!

最好的祝愿!

python stdout buffering stderr unbuffered

4
推荐指数
1
解决办法
3308
查看次数

标签 统计

buffering ×1

python ×1

stderr ×1

stdout ×1

unbuffered ×1