第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

一個(gè)簡(jiǎn)單、易用的Python命令行(terminal)進(jìn)度條庫

標(biāo)簽:
Python

eprogress 是一个简单、易用的基于Python3的命令行(terminal)进度条库,可以自由选择使用单行显示、多行显示进度条或转圈加载方式,也可以混合使用。

示例

  • 单行进度条


    https://img1.sycdn.imooc.com//5d30775d000102de00050016.jpg

    progress_sample_line.gif

  • 多行进度条

https://img1.sycdn.imooc.com//5d3077680001ba7c00050016.jpg

progress_sample_multi_line.gif

  • 圆形加载

https://img1.sycdn.imooc.com//5d3077790001337600050016.jpg

progress_sample_cicle.gif

  • 混合显示

https://img1.sycdn.imooc.com//5d3077860001337600050016.jpg

progress_sample_multi_mix.gif

特性

  • 使用简单,实例化一个Progress对象,调用update方法即可刷新进度

  • 不依赖任何第三方库。

  • 可定制进度符号,title,显示宽度,个性化显示。

  • 多行、单行显示进度、圆形转圈加载随意搭配。

  • 多线程安全,可在多个线程中更新进度条。

使用方法

  1. 导入eprogress

    from eprogress import LineProgress, CircleProgress, MultiProgressManager
  2. 实例化进度条对象,更新进度

    # circle loading
       circle_progress = CircleProgress(title='circle loading')   for i in range(1, 101):
             circle_progress.update(i)
             time.sleep(0.1)# line progress
            line_progress = LineProgress(title='line progress')        for i in range(1, 101):
                line_progress.update(i)
                time.sleep(0.05)# multi line or circle loading progressprogress_manager = MultiProgressManager()
    progress_manager.put(str(1001), LineProgress(total=100, title='1 thread'))
    progress_manager.put(str(1002), LineProgress(total=100, title='2 thread'))
    progress_manager.put(str(1003), LineProgress(total=100, title='3 thread'))
    progress_manager.put(str(1004), CircleProgress(title='4 thread'))... ...
    
    progress_manager.update(key, progress)
  • 圆形加载条使用update(progress)实例方法进行刷新,只有当参数大于0时才会转动。

  • 线性进度条使包含4个可选参数:

    @param total : 进度总数@param symbol : 进度条符号@param width : 进度条展示的长度@param title : 进度条前面展示的文字

    创建实例后调用update(progress)实例方法更新进度。

  • 多行进度显示使用MultiProgressManager类,实例化该类,调用put(key,progressBar)方法统一管理多个进度条,内部使用一个dict来收集进度条,多行显示的顺序为put的顺序。更新某个进度条时使用progressMangager的update(key,progress)方法,该key为put进度条时使用的key。

  • 无论是使用多行进度条混合还是使用单行进度条,都不用考虑多线程更新的问题,内部已用Lock()加锁。

  • 详细样例请看源码:Sample源码

原理

  • 利用\r使光标回到本行的行首位置,不使用Python的print()函数,该函数会自动换行,当然你也可以指定print()函数的end参数让其不换行,如:

    print('Complete',end='')

    我这里使用sys.stdout.write()来输出字符:

    sys.stdout.write('Complete')
  • 使用ANSI终端指令码\033[K清除光标后面的字符。

  • 使用\033[F使用光标回到上一行,这里要注意,光标回到上一行后下面的一行会被清除。

  • 使用threading.Lock()加锁,在多线程更新进度时确保安全。

  • 抽象类ProgressBar下面有两个子类,分别为LineProgress和 CircleProgress,可单独使用这两个子类来显示单行的进度条。

  • 多行显示进度条时使用MultiProgressManager类来管理,把ProgressBar实现类put到MultiProgressManager类里面,用dict来管理,MultiProgressManager提供统一的update(key,progress)实例方法来指定更新哪一行的进度条。

  • 详细请看源码:Sample源码

注意事项

  • 请在Python3环境下使用。

  • 请不要IDE的运行方式使用,需在终端(terminal)下使用。



作者:竹尘居士
链接:https://www.jianshu.com/p/41435ff72719
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消