【发布时间】:2013-09-30 22:12:52
【问题描述】:
我认为编写文件可以提供实时输出,因为当我使用 C/C++ 编写文件时就是这样。但是当我运行 python 程序时,输出文件似乎总是 0 字节,直到整个程序完成运行。即使对于nohup python xxx.py &,文件nohup.out 中的print 内容也不是实时的,只能在执行后才能看到。
我现在正在运行非常大的程序,想查看文件中的进度,我该如何实现呢?
【问题讨论】:
-
你可能需要刷 f.flush()
-
刷新输出缓冲区。出于性能原因,它将分块写入。
-
@FooBarUser 谢谢大家,我试试看。
-
@JohnFoley 顺便说一句,如果我经常执行 f.flush() 是否会非常损害效率?
-
"因为当我使用 C/C++ 编写文件时是这样的" - 不。通过 C 或 C++ 中的
<stdio.h>例程写入文件具有完全相同的问题——缓冲——以及完全相同的解决方案——fflush()。