golang控制台顯示進度條

2021-09-23 13:29:13 字數 1216 閱讀 1449

[x] 總量

[x] 當前進度

[x] 耗時

通過以上元素可以延伸出:完成百分比、速度、預計剩餘時間、根據設定速度快慢閾值用不同的顏色來顯示進度條。

// 進度條

type bar struct

耗時

乙個計時器,需要注意的是即使進度沒有變化,耗時也是遞增的,看過乙個多程序進度條的寫法,沒有注意這塊,乙個gorouting:

func

(b *bar)

updatecost()

}}

進度

通過add方法來遞增當前完成的量,然後計算相關的值:速度、百分比、剩餘完成時間等,這裡計算速度一般是取最近一段時間內的平均速度,如果是全部的完成量直接除當前耗時的話計算出來的速度並不準確,同時會影響剩餘時間的估計。

func

(b *bar)

add(

)delete

(b.currents, befkey)

lastrate := b.rate

lastspeed := b.speed

b.rate = b.current *

100/ b.total

if b.cost ==

0else

if b.before ==

0else

if b.speed !=

0 b.mu.

unlock()

if lastrate != b.rate || lastspeed != b.speed

if b.rate >=

100}

顯示

最簡單的直接用\r。多進度條同時展示的話需要用到終端游標移動,這裡只需要用到游標的上下移動即可,\033[na 向上移動n行,\033[nb 向下移動n行。

移動到第n行:

func

move

(line int

)

為了支援其他的標準輸出不影響進度條的展示,還需要提供print, printf, println 的方法, 用於計算當前游標所在位置,每個進度條都會有自己的所在行,顯示的時候游標需要移動到對應的行。

Python 控制台顯示進度條

我們在寫一些python程式時,如果程式執行時間較長,我們希望能夠有乙個進度條來動態的展示程式執行進度。首先能想到的做法是用print將執行到第幾步列印出來,但這樣顯然不是我們想要的進度條,顯示進度占用了很多行,原因是print在末尾預設加上了 n 換行符。詳見 你應該知道的print import...

實現控制台進度條

此類功能在linux的控制台軟體中是很常見的,windows下沒有什麼印象。因為wget是c語言在linux上實現的,我首先考慮到的是不是有相關介面,於是就找來那本名著 uinx環境程式設計 查閱後並未發現相關api。有同事認為stdout也是檔案,應該看看檔案io章。於是就仔細學習了那章,複習和鞏...

c 控制台進度條類

console.writeline now show consolepare c new consolepare 100mb for int i 0 i 100 i i 3 console.writeline console.writeline ok console.read class conso...