我注意到在一些Python代码中使用了参数-u来启动Python解释器。我查看了Python的man手册,但是没有找到太多有用的信息。请给我一些示例。
我注意到在一些Python代码中使用了参数-u来启动Python解释器。我查看了Python的man手册,但是没有找到太多有用的信息。请给我一些示例。
来自python --help
:
-u : unbuffered binary stdout and stderr; also PYTHONUNBUFFERED=x
see man page for details on internal buffering relating to '-u'
该手册页面指出:-u Force stdin, stdout and stderr to be totally unbuffered. On systems where it matters, also put stdin,
stdout and stderr in binary mode. Note that there is internal buffering in xreadlines(), readlines()
and file-object iterators ("for line in sys.stdin") which is not influenced by this option. To work
around this, you will want to use "sys.stdin.readline()" inside a "while 1:" loop.
Python以带缓冲区的方式打开标准输入、输出和错误流,会将数据读取或写入到内存中,直到达到阈值。选项-u
可以禁用这些缓冲区。-u
选项可以禁用这种转换,使你能够处理二进制数据,而不必担心可能发生的\r\n
组合问题。这相当于在使用open()
函数打开文件时使用rb
或wb
模式。python3.4 --help
) - Jonathan Hartley--help
信息也没有提到stdin。这是因为stdin缓冲区不受Python控制。 - Martijn PietersPython适用于读取和输出大量数据。其中一种优化是Python解释器的标准输入和输出缓冲。这意味着每当程序尝试使用其中一个流时,解释器会将使用情况分成大块并一次性发送这些块。这比单独发送每个读/写操作要快,但明显缺点是数据可能会在中间被阻塞。
-u标志关闭此行为。