我正在阅读 Ruby 中的 god
进程监控框架的源代码,发现了这个 STDOUT.sync = true
。我以前从未见过这样的事情。
请解释它的作用,这一行的意义何在?
提前致谢。
最佳答案
通常 puts
不会立即写入 STDOUT
,而是在内部缓冲字符串并将输出写入更大的 block 。这样做是因为 IO 操作很慢,通常避免将每个字符立即写入控制台更有意义。
这种行为在某些情况下会导致问题。假设您想构建一个进度条(运行一个循环,在大量计算之间输出单个点)。缓冲的结果可能是一段时间没有任何输出,然后突然一次打印多个点。
要避免这种行为,而是立即写入 STDOUT
,您可以像这样将 STDOUT
设置为同步模式:
STDOUT.sync = true
来自docs :
When sync mode is true, all output is immediately flushed to the underlying operating system and is not buffered internally.
关于ruby - STDOUT.sync = true 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29998728/