我正在运行一个线程,它做了几件事。
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
}
价格或数字只有在我终止循环或程序后才出现在文件中。我希望能够在程序仍在运行时对添加到文件中的数字运行一些函数。
1条答案
按热度按时间tvmytwxo1#
Ruby通常不会立即将内容写入控制台的文件或字符串,而是缓冲输出并将输出写入块。
当您需要立即输出并且不想等待时,则有两个选项:
price_file.sync = true
。当IO.sync=
设置为true
时,所有输出都会立即刷新到底层操作系统,而不会在内部进行缓冲。