假設我有一個計算難題的方法(也許是一個巨大的圖中的深度優先搜索),我們可以將這個方法稱爲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