Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我认为编写文件可以提供实时输出,因为当我使用 C/C++ 编写文件时就是这样。但是当我运行 python 程序时,输出文件似乎总是 0 字节,直到整个程序完成运行。即使对于nohup python xxx.py &,print文件nohup.out中的内容也不是实时的,只能在执行后才能看到。我现在正在运行非常大的程序并想查看文件中的进度,我该如何实现呢?
nohup python xxx.py &
print
nohup.out
您的文件可以在两个点进行缓冲 - Python 的内部缓冲区和操作系统上的缓冲区。这是一种性能提升,可在缓冲区填满时避免系统调用和磁盘写入。
调用file.flush()会将内部缓冲区推送到操作系统。您还可以调用fsync以请求操作系统保存到磁盘。
file.flush()
fsync
通常你可以让操作系统去做它最擅长的事情,所以调用flush对于大多数应用程序来说通常就足够了。Python 的内部缓冲区也是如此——它最了解性能,但您可能需要更频繁的写入并愿意支付额外的成本。了解确切成本的唯一方法是双向衡量。
flush