本文實例講述了Python實現輸出程序執行進度百分比的方法。分享給大家供大家參考,具體如下:
對于一些大型的Python程序,我們需要在命令行輸出其百分比,顯得更加友好,以免被人誤會程序陷入死循環、假死的窗體。
關鍵是利用到不換行的輸出符/r,/r的輸出,將直接覆蓋掉此行的內容。
比如如下的程序,是一個i從0自加的十萬的過程,即使對于現在高性能的CPU也是需要幾秒的時間的,我們要輸出其執行時候的百分比,可以在引入sys這個包之后,利用到sys.stdout.write輸出,避免原生態的print自帶的/n影響大局。同時要控制百分比的小數位為4。程序執行的百分比恰好為i當前的值除以值為十萬的total。
#-*-coding:utf-8-*-import sys;total=100000for i in range(0,total): percent=float(i)*100/float(total) sys.stdout.write("%.4f"%percent); sys.stdout.write("%/r"); sys.stdout.flush();sys.stdout.write("100%!finish!/r");sys.stdout.flush();程序運行結果如下:

但是,這里i每自增一次就要求當前的運行的百分比,把原本100000次的浮點運算徒然增加到二十萬次,同時要刷新100000次的屏幕,非常不合理,因此對于程序,可以做如下的改進,運行百分比僅保留2位小數,同時i每累積100才進行百分比輸出,程序修改之后如下:
#-*-coding:utf-8-*-import sys;total=100000for i in range(0,total): if i%100==0: percent=float(i)*100/float(total) sys.stdout.write("%.2f"%percent); sys.stdout.write("%/r"); sys.stdout.flush();sys.stdout.write("100%!finish!/r");sys.stdout.flush();從求運行百分比的100000次的浮點運算改為100000次的條件運算,同時僅要刷新屏幕1000次,程序的運行耗時將大大減少。
同時,這里值得注意的是,Eclipse中的Pydev中的控制臺,對于/r依然是處理成換行符,使得輸出變成如下的樣子,這里沒有辦法了!

更多關于Python相關內容感興趣的讀者可查看本站專題:《Python數學運算技巧總結》、《Python數據結構與算法教程》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》、《Python入門與進階經典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對大家Python程序設計有所幫助。
新聞熱點
疑難解答