-u 标志对 Python 脚本的性能或执行有何作用?

What does the -u flag do to performance or execution of a Python script?

我正在编写的 multiprocessing.Process 驱动的脚本没有按预期打印到终端,所以我没有将 flush=True 添加到每个打印函数,而是将 -u 标志添加到我的 python命令行。

所以不是这个:

python /path/to/script

我运行:

python -u /path/to/script

瞧!无数的打印功能都按预期打印出来。

运行 Python 无缓冲脚本除了使打印功能按预期工作之外还能做什么?(我的主要问题...)

为什么它一开始就没有缓冲?

谢谢!

当大量输出以增量方式生成但不需要实时处理时,缓冲可以提高性能。

例如,如果您从远程服务器下载数据并将其写入文件或控制台,而您真正关心的只是最终结果(完整文件或完整输出),那么合理的做法是不是一次向文件输出几个字节,而是等待接收到一大块字节,然后一次将它们全部写入 - 写入函数调用花费的时间更少,并且(如果写入磁盘)更少的磁盘寻道以及更长时间的连续写入。

通常,Python 的调用将在 python 进程退出 and/or 且缓冲区已满时刷新其输出。有可能您正在做的事情要么没有正常终止,要么没有生成足够的输出来填满缓冲区,因此没有触发刷新缓冲区的正常条件。