禁用输出缓冲

2024-04-06

Python 解释器中默认启用输出缓冲吗sys.stdout?

如果答案是肯定的,有哪些方法可以禁用它?

到目前为止的建议:

  1. Use the -u命令行开关
  2. Wrap sys.stdout在每次写入后刷新的对象中
  3. Set PYTHONUNBUFFERED env var
  4. sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)

有没有其他方法可以设置一些全局标志sys/sys.stdout在执行过程中以编程方式?


If you just want to flush after a specific write using print, see How can I flush the output of the print function? https://stackoverflow.com/questions/230751.


From Magnus Lycka 在邮件列表中回复 http://mail.python.org/pipermail/tutor/2003-November/026645.html:

您可以跳过整个缓冲 python进程使用python -u或通过 设置环境变量 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'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

禁用输出缓冲 的相关文章

随机推荐