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

Log*_*ang 3 python file output

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

Fen*_*ton 6

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

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

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