3

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

4

1 回答 1

6

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

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

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

于 2013-09-30T22:30:43.413 回答