假设我有一个计算难题的方法(也许是一个巨大的图中的深度优先搜索),我们可以将这个方法称为dfs(graph)
。 此方法也输出到stdout
每个结果达到,使用puts result
。ruby-progressbar和stdout
def dfs(graph)
while true
# lots of computation
result = something_reached
puts result
end
end
我想显示在壳进度表明,计算正在运行,所以我想补充一个实例是这样的:
pbar = ProgressBar.create(title: "Computing", starting_at: 1, total: nil)
和进度状态必须被更新(pbar.increment
)的计算是运行。
在shell中,我执行我的计划是这样的:
ruby dfs.rb > dfs_results.txt
问题:
随着
pbar
刷新到stdout
所以prograss杆被重定向到dfs_results.txt
和计算结果没有存储在这个文件中。 没有pbar
结果数据按预期存储在文件中,但显然没有进度条。我知道结果可以存储在
File.open
的使用情况下,但是最好在shell重定向的情况下完成。
问题:
我应该如何实施冲洗计算resulta到dfs_results.txt
文件,并显示一个进度条,以保持对用户执行的进展?
谢谢您,您的建议是一个好的替代方案。我已经指定了一个限制。我希望可以用shell重定向完成,而不是从我的程序中打开文件。 – Israel
试试这个:https://en.wikipedia.org/wiki/Tee_%28command%29 – JLB