Python sys.stderr刷新频率

时间:2014-03-18 05:23:16

标签: python buffer flush stderr

sys.stderr多久刷新一次缓冲区,这是不同环境中的标准?

>>> import sys
>>> sys.__stderr__
<open file '<stderr>', mode 'w' at 0x2b4fcb7ac270>

我发现它只是一种标准的文件类型,但我不知道它应该是buffering的价值。 dir()似乎也不会产生任何有用的信息。

1 个答案:

答案 0 :(得分:3)

在Python 2上,我无法找到文档中sys.stderr指定缓冲的位置。我期望与stderr in C that is unbuffered (except Windows)具有相同的行为,我不知道c99标准是否要求它。 POSIX中的The standard error stream is not fully buffered。 Python 2中的-u option forces standard streams to be unbuffered

On Python 3

  

交互式时,标准流是行缓冲的。否则,他们   像常规文本文件一样是块缓冲的。你可以覆盖它   使用-u命令行选项的值。

-u command-line option

  

强制stdout和stderr流的二进制层(即   作为buffer属性可用)无缓冲。文本I / O.   如果写入控制台,则图层仍将是行缓冲的,或者   如果重定向到非交互式文件,则阻止缓冲。

相关问题