【发布时间】:2014-07-13 23:37:55
【问题描述】:
假设我有一个计算难题的方法(可能是在一个巨大的图中进行深度优先搜索),我们可以将此方法称为dfs(graph)。
此方法还使用puts result 将达到的每个结果输出到stdout。
def dfs(graph)
while true
# lots of computation
result = something_reached
puts result
end
end
我想在 shell 中显示一个进度条来表明计算正在运行,所以我添加了一个这样的实例:
pbar = ProgressBar.create(title: "Computing", starting_at: 1, total: nil)
并且必须在计算运行时更新进度条状态 (pbar.increment)。
在 shell 中,我这样执行我的程序:
ruby dfs.rb > dfs_results.txt
问题:
-
pbar被刷新到stdout,所以 prograss-bar 被重定向到dfs_results.txt并且计算结果不存储在这个文件中。 没有pbar,结果数据按预期存储在文件中,但显然没有进度条。我知道可以使用
File.open存储结果,但最好使用 shell 重定向。
问题:
我应该如何实现将计算结果刷新到dfs_results.txt 文件并显示进度条以保持用户的执行进度?
【问题讨论】:
标签: ruby progress-bar stdout