提问人:seamus 提问时间:3/18/2023 最后编辑:marc_sseamus 更新时间:4/12/2023 访问量:43
Ruby:数据到文件的数据仅在程序终止后写入/保存/可见
Ruby: Data to a file only being written / saved / visible after program terminates
问:
我正在运行一个做一些事情的线程。
- 它从 API 获取浮点数
- 将该数字追加到文件中
- 将该数字打印到命令终端
- 重复
法典:
price_file = File.open(price_file, "w+")
$time = Thread.new {
while true
price = Api.new.api(nil)
price_file << price
price_file << " "
puts price
sleep(seconds)
end
}
价格或数字仅在我终止循环或程序后才会出现在文件中。
我希望能够在程序仍在运行时对添加到文件中的数字运行一些函数。
答:
4赞
spickermann
3/18/2023
#1
Ruby 通常不会立即将内容写入控制台的文件或字符串中。相反,它缓冲输出并将输出写入块中。
当您立即需要输出并且不想等待时,有两个选项:
- 写入后关闭文件,并在有更多数据要写入时再次打开它。在您的用例中,这可能是首选,在该用例中,您希望另一个进程同时从该文件中读取数据。关闭文件应确保文件处于一致状态。
- 或者您可以在打开文件后进行设置。当
IO.sync=
设置为 时,所有输出将立即刷新到底层操作系统,并且不会在内部缓冲。price_file.sync = true
true
评论