我在纠结于 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 ...
or stdbuf -e0 -o0 python ...
。然而,以下测试脚本没有任何效果。
import sys
import time
while(True):
print("Test String")
time.sleep(1);
对于所有不同的命令,我总是有缓冲输出。即使当我想使用 STDERR 时。它仍然是缓冲的,这让我很困惑,因为默认情况下 STDERR 应该是无缓冲的。使用sys.stdout.flush()
orsys.stderr.flush()
也没有做这项工作。在flush=True
内部使用时,print()
它按预期工作。
我正在寻找一种不需要编辑代码的解决方案,因为我无法编辑所有程序以获得无缓冲并立即刷新输出。我怎样才能做到这一点?
期待您的回答!
最好的祝愿!