Python-禁用输出缓冲
默认情况下,Python的解释器是否启用输出缓冲sys.stdout
?
如果答案是肯定的,那么有什么方法可以禁用它?
到目前为止的建议:
- 使用
-u
命令行开关 - 包装
sys.stdout
每次写入后刷新的对象 - 设置环境
PYTHONUNBUFFERED
变量 sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
还有其他方法可以在执行过程中以编程方式在sys/
中设置一些全局标志sys.stdout
吗?
回答:
你可以使用”python -u”(or#!/usr/bin/env python -u etc
)或通过设置环境变量PYTHONUNBUFFERED来跳过整个python进程的缓冲。
你还可以将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'
以上是 Python-禁用输出缓冲 的全部内容, 来源链接: utcz.com/qa/430988.html