python - 为什么我在输出文件中看不到实时输出?

标签 python file output

我认为写一个文件可以提供实时输出,因为当我使用 C/C++ 写文件时就是这样。但是当我运行 python 程序时,输出文件似乎总是 0 字节,直到整个程序运行完毕。即使对于nohup python xxx.py &,文件nohup.out中的print内容也不是实时的,只能被看到执行后。 我现在正在运行一个非常大的程序,想在文件中查看进度,我该如何实现?

最佳答案

您的文件可以在两点进行缓冲 - Python 的内部缓冲区和操作系统上的缓冲区。这是一种性能提升,可避免在缓冲区填满时进行系统调用和磁盘写入。

调用 file.flush() 会将内部缓冲区推送到操作系统。您还可以调用 fsync 来请求操作系统保存到磁盘。

通常你可以让操作系统去做它最擅长的事情,所以调用 flush 通常对大多数应用程序来说就足够了。 Python 的内部缓冲区部分也是如此——它最了解性能,但您可能需要更频繁的写入并愿意支付额外的费用。了解确切成本的唯一方法是通过两种方式进行衡量。

关于python - 为什么我在输出文件中看不到实时输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19104798/

相关文章:

java - 为什么 FileWriter 不写入 "output.csv"但写入确切路径 "C:\\path\\output.csv"?

c - 使用 C 程序在文件中定位文本

c - 如何使我的输出仅显示我的 c 支票生成器程序所需的内容

java - 尝试在 IF 语句中将字符串变量输出到 .txt 文件。 - java

Python不解析命令行

c - 从文件中扫描字符时出现问题

python - 检查由 nginx 反向代理(Django 应用程序)转发的代理集 header

c - 使用 C 我想格式化我的输出,以便终端中的输出一旦到达窗口边缘就停止

python - 为什么我们使用@staticmethod?

python - 警告 : The Command Line Tools for Xcode don't appear to be installed; most ports will likely fail to build