python中flush=true_python - 禁用输出缓冲

在Python中,默认情况下sys.stdout启用输出缓冲。禁用它的方法包括使用命令行开关`-u`,通过替换sys.stdout为每次写入后刷新的类,设置环境变量`PYTHONUNBUFFERED`,或者在print函数中使用`flush=True`参数。这些方法允许在运行时以不同方式控制Python的输出缓冲。
摘要由CSDN通过智能技术生成

python - 禁用输出缓冲

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

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

建议到目前为止:

使用sys命令行开关

将sys包装在每次写入后刷新的对象中

设置sys env var

sys

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

15个解决方案

360 votes

来自Magnus Lycka的回复邮件列表:

你可以跳过缓冲整体   使用“python -u”的python进程   (或#!/ usr / bin / env python -u等)或者   设置环境变量  PYTHONUNBUFFERED。

您也可以用sys替换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'

Seb answered 2019-01-05T08:18:36Z

73 votes

# reopen stdout file descriptor with write mode

# and 0 as the buffer size (unbuffered)

sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)

致谢:“塞巴斯蒂安”,在Python邮件列表的某个地方。

Federico A. Ramponi answered 2019-01-05T08:19:00Z

73 vo

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值