print()
函数 flush
有一个布尔可选参数,默认为 False。
文档上说是强制刷流。
我不明白冲洗的概念。什么在这里冲洗?什么是流冲洗?
原文由 Santosh Kumar 发布,翻译遵循 CC BY-SA 4.0 许可协议
print()
函数 flush
有一个布尔可选参数,默认为 False。
文档上说是强制刷流。
我不明白冲洗的概念。什么在这里冲洗?什么是流冲洗?
原文由 Santosh Kumar 发布,翻译遵循 CC BY-SA 4.0 许可协议
这里有几件事需要理解。一个是缓冲 I/O 和非缓冲 I/O 之间的区别。这个概念相当简单——对于缓冲 I/O,有一个保留的内部缓冲区。只有当该缓冲区已满(或发生其他事件,例如到达换行符)时,输出才会“刷新”。使用无缓冲 I/O,每当调用输出某些内容时,它都会执行此操作,一次 1 个字符。
大多数 I/O 函数都属于缓冲类别,主要是出于性能原因:一次写入块要快得多(所有 I/O 函数最终都会归结为某些描述的系统调用,这是昂贵的。)
flush
允许您手动选择何时写入此内部缓冲区 - 调用 flush 将在缓冲区中写入任何字符。通常,这不是必需的,因为流会自行处理。但是,在某些情况下,您可能希望在继续之前确保已输出某些内容 - 这就是您需要调用 flush()
的地方。
原文由 Yuushi 发布,翻译遵循 CC BY-SA 3.0 许可协议
2 回答5.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
2 回答895 阅读✓ 已解决
1 回答1.8k 阅读✓ 已解决
通常输出到文件或缓冲控制台,至少在打印换行符之前输出文本。刷新确保缓冲的任何输出都到达目的地。
我确实使用它,例如,当我在获取输入之前发出像
Do you want to continue (Y/n):
这样的用户提示时。这可以模拟(在 Ubuntu 12.4 上使用 Python 2.7):
如果你运行这个,你会看到提示字符串直到睡眠结束和程序退出才出现。如果你用 flush 取消注释行,你会看到提示,然后必须等待 5 秒让程序完成