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

时间:2011-09-04 22:12:38

标签: python io stdout

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

聚苯乙烯。我不知道它是否重要,但我使用的是OS X(至少有一些sys命令取决于操作系统)。

1 个答案:

答案 0 :(得分:1)

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

原因是python的文件实现基于FILE *的C(stdio)实现。因此,基础python文件对象基本上只是对已打开的FILE的引用。在写数据时,C实现写入数据,当你告诉flush()时,python也只是转发刷新调用。所以python不保存信息。即使对于底层C层,快速搜索也会返回没有文档化的API允许您访问此信息,但是它可能位于FILE对象中的某个位置,因此理论上如果拼命地将其读出来需要的。