我认为写一个文件可以提供实时输出,因为当我使用 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/