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



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

所以取而代之的是:

python /path/to/script

我跑了:

python -u /path/to/script

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

在无缓冲的情况下运行 Python 脚本除了使打印函数按预期工作之外,还做了什么?(这是我的主要问题...

为什么它首先不是无缓冲的?

谢谢!

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

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

通常,Python 的调用将在 python 进程退出和/或缓冲区已满时刷新其输出。您正在执行的操作可能没有正常终止,或者没有生成足够的输出来填充缓冲区,因此没有触发刷新缓冲区的正常条件。

相关内容

  • 没有找到相关文章

最新更新