Python-禁用输出缓冲

默认情况下,Python的解释器是否启用输出缓冲sys.stdout

如果答案是肯定的,那么有什么方法可以禁用它?

到目前为止的建议:

  1. 使用-u命令行开关
  2. 包装sys.stdout每次写入后刷新的对象
  3. 设置环境PYTHONUNBUFFERED变量
  4. 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

回到顶部