Ruby:程序终止后,数据只能写入/保存/可见文件

jvidinwx  于 2023-04-05  发布在  Ruby
关注(0)|答案(1)|浏览(145)

我正在运行一个线程,它做了几件事。
1.它从API获取一个浮点数
1.将该数字追加到文件中
1.将该数字打印到命令终端
1.重复

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
 }

价格或数字只有在我终止循环或程序后才出现在文件中。我希望能够在程序仍在运行时对添加到文件中的数字运行一些函数。

tvmytwxo

tvmytwxo1#

Ruby通常不会立即将内容写入控制台的文件或字符串,而是缓冲输出并将输出写入块。
当您需要立即输出并且不想等待时,则有两个选项:

  • 在写入后关闭文件,并在有更多数据要写入时再次打开它。在您希望另一个进程同时从该文件读取的用例中,这可能是首选。关闭文件应确保文件处于一致的状态。
  • 或者您可以在打开文件后设置price_file.sync = true。当IO.sync=设置为true时,所有输出都会立即刷新到底层操作系统,而不会在内部进行缓冲。

相关问题