ProgressBar设计

   由于\r是光标切换到行头,\n光标切换到下行,\r\n就是换行到下行行首。

   我们来看网上搜索到的一段程序:

class ProgressBar():
  def __init__(self, width=50):
    self.pointer = 0
    self.width = width
  def __call__(self,x):
     # x in percent
     self.pointer = int(self.width*(x/100.0))
     return "|" + "#"*self.pointer + "-"*(self.width-self.pointer)+ "|\n %d percent done" % int(x)
if __name__ == '__main__':
    import time,os
pb = ProgressBar()
for i in range(101):
    os.system('clear')
    print( pb(i))
    time.sleep(0.1)

发现并不是想要的在原地进度显示效果,单纯print无法达到效果,使用标准输出平台就没问题了。

import sys

import time

from time import sleep

from tqdm import tqdm

class progress_bar:

   @classmethod

   def singleThread(cls):

       total=100

       output=sys.stdout

       for count in range(0,total+1):

           _second=0.1

           time.sleep(_second)

           output.write(f'\rcomplete percent:{count:.0f}')

       output.flush()

   @classmethod

   def muiltThread(cls):

       for i in tqdm(range(1,500)):

           sleep(0.01)

progress_bar.singleThread()

progress_bar.muiltThread()


大家可以看出,这时达到预期的效果了。提醒一句,tqdm模块需要pip安装一下,读者自己下载安装。



你可能感兴趣的:(机器学习,Python高手系列)