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

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

本文執行個體講述了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依然是處理成分行符號,使得輸出變成如下的樣子,這裡沒有辦法了!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.