如何判断是否已在Python中刷新sys.stdout

M.D*_*.D. 5 python io stdout

我正在尝试调试我编写的一些代码,这涉及很多并行进程.并且有一些不需要的行为涉及输出sys.stdout和某些消息被打印两次.出于调试目的,知道某个点是否sys.stdout已被刷新将是非常有用的.我想知道这是否可能,如果是的话,怎么样?

PS.我不知道它是否重要但我使用OS X(至少一些sys命令取决于操作系统).

rum*_*pel 1

答案是:你无法分辨(不是没有严重的丑陋、外部 C 模块或类似的)。

\n\n

原因是 python\xe2\x80\x99s 文件实现基于FILE *. 因此,底层 python 文件对象基本上只具有对打开的FILE. 当写入数据时,C 实现会写入数据,而当您将其告诉flush()python 时,也只会转发刷新调用。所以python不保存这些信息。即使对于底层 C 层,快速搜索也表明没有记录的 API 允许您访问此信息,但它可能位于对象中的某个位置FILE,因此理论上如果迫切需要它,可以将其读出。

\n