默认情况下,Python的解释器是否启用输出缓冲sys.stdout?
sys.stdout
如果答案是肯定的,那么有什么方法可以禁用它?
到目前为止的建议:
-u
PYTHONUNBUFFERED
sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
还有其他方法可以在执行过程中以编程方式在sys/中设置一些全局标志sys.stdout吗?
sys/
你可以使用”python -u”(or#!/usr/bin/env python -u etc)或通过设置环境变量PYTHONUNBUFFERED来跳过整个python进程的缓冲。
or#!/usr/bin/env python -u etc
你还可以将sys.stdout替换为包装器之类的其他流,该流在每次调用后进行刷新。
class Unbuffered(object): def __init__(self, stream): self.stream = stream def write(self, data): self.stream.write(data) self.stream.flush() def writelines(self, datas): self.stream.writelines(datas) self.stream.flush() def __getattr__(self, attr): return getattr(self.stream, attr) import sys sys.stdout = Unbuffered(sys.stdout) print 'Hello'