我正在尝试调试我编写的一些代码,这涉及很多并行进程。并且有一些不需要的行为涉及到sys.stdout
的输出和某些消息被打印两次。出于调试目的,了解某个点sys.stdout
是否已被刷新是非常有用的。我想知道这是否可能,如果可能,怎么样?
聚苯乙烯。我不知道它是否重要,但我使用的是OS X(至少有一些sys
命令取决于操作系统)。
答案 0 :(得分:1)
答案是:你无法分辨(不是没有严重的丑陋,外部的C模块或类似的东西)。
原因是python的文件实现基于FILE *
的C(stdio)实现。因此,基础python文件对象基本上只是对已打开的FILE
的引用。在写数据时,C实现写入数据,当你告诉flush()
时,python也只是转发刷新调用。所以python不保存信息。即使对于底层C层,快速搜索也会返回没有文档化的API允许您访问此信息,但是它可能位于FILE
对象中的某个位置,因此理论上如果拼命地将其读出来需要的。