ruby - STDOUT.sync = true 是什么意思?

标签 ruby io

我正在阅读 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/

相关文章:

io - 矩形中的 SwiftUI 对角线 LinearGradient

Ruby:从单独的文件向模块添加方法并自动加载它

ruby - Number Bases & Ruby - 递增用于特定数字基数的变量的最快方法是什么?

python - 如何在 Python 中打印命令?

java - 写入文件时出现 IndexOutOfBoundException

io - 使用 MPI-IO 编写 Fortran 格式的文件

javascript - 检查文本字段中的值是否已更改并发布。 JS。 rails

ruby-on-rails - Rbenv 没有使用正确的版本

ruby-on-rails - Rails:将当前用户的已发布项目和未发布项目显示为 ActiveRecord::Relation

c++ - 如何消除这个多余的元素?