首頁  >  文章  >  後端開發  >  Python實作輸出程式執行進度百分比

Python實作輸出程式執行進度百分比

巴扎黑
巴扎黑原創
2017-09-18 10:18:352100瀏覽

這篇文章主要介紹了Python實現輸出程序執行進度百分比的方法,涉及Python數值運算與系統輸出相關操作技巧,需要的朋友可以參考下

本文實例講述了Python實現輸出程序執行進度百分比的方法。分享給大家供大家參考,具體如下:

對於一些大型的Python程序,我們需要在命令列輸出其百分比,顯得更加友好,以免被人誤會程式陷入死循環、假死的窗體。
關鍵是利用到不換行的輸出符\r,\r的輸出,將直接覆寫此行的內容。

例如如下的程序,是一個i從0自加的十萬的過程,即使對於現在高性能的CPU也是需要幾秒的時間的,我們要輸出其執行時候的百分比,可以在引入sys這個套件之後,利用到sys.stdout.write輸出,避免原生態的print自帶的\n影響大局。同時要控制百分比的小數位為4。程式執行的百分比恰好為i目前的值除以值為十萬的total。


#-*-coding:utf-8-*-
import sys;
total=100000
for 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=100000
for 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實作輸出程式執行進度百分比的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn