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

时间:2013-09-30 22:12:52

标签: python file output

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

1 个答案:

答案 0 :(得分:6)

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

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

通常,您可以让操作系统执行它最熟悉的操作,因此对大多数应用程序来说,调用flush通常就足够了。 Python的内部缓冲区也是如此 - 它在性能方面最了解,但您可能需要更频繁的写入并愿意支付额外的成本。了解确切成本的唯一方法是两种方式进行衡量。