当前位置 主页 > 服务器问题 > Linux/apache问题 >

    使用tqdm显示Python代码执行进度功能

    栏目:Linux/apache问题 时间:2019-12-08 22:09

    在使用Python执行一些比较耗时的操作时,为了方便观察进度,通常使用进度条的方式来可视化呈现。Python中的tqdm就是用来实现此功能的。

    先来看看tqdm的进度条效果:

     

    tqdm的基本用法

    tqdm最主要的用法有3种,自动控制、手动控制或者用于脚本或命令行。

    自动控制运行

    最基本的用法,将tqdm()直接包装在任意迭代器上。

    from tqdm import tqdm
    import time
    text = ""
    for char in tqdm(["a", "b", "c", "d"]):
     text = text + char
     time.sleep(0.5)
    
    trange(i) 是对tqdm(range(i)) 特殊优化过的实例:
    
    from tqdm import trange
    import time
    for i in trange(100):
     time.sleep(0.1)

    如果在循环之外实例化,可以允许对tqdm() 手动控制:

    from tqdm import tqdm
    import time
    pbar = tqdm(["a", "b", "c", "d"])
    for char in pbar:
     pbar.set_description("Processing %s" % char)
     time.sleep(0.5)

    手动控制运行

    用with 语句手动控制 tqdm() 的更新:

    from tqdm import tqdm
    import time
    with tqdm(total=100) as pbar:
     for i in range(10):
      pbar.update(10)
      time.sleep(0.5)

    或者不用with语句,但是最后需要加上del或者close()方法:

    from tqdm import tqdm
    import time
    pbar = tqdm(total=100)
    for i in range(10):
     pbar.update(10)
     time.sleep(0.5)
    pbar.close()

    tqdm.update()方法用于手动更新进度条,对读取文件之类的流操作非常有用:

    tqdm在多进程场景下的应用

    代码示例:

    from multiprocessing import Pool

    import tqdm
    import time
    def _foo(my_number):
     square = my_number * my_number
     time.sleep(1)
     return square 
    if __name__ == '__main__':
     with Pool(2) as p:
      r = list(tqdm.tqdm(p.imap(_foo, range(30)), total=30))
    

    参考链接:

    https://github.com/tqdm/tqdm

    总结

    以上所述是小编给大家介绍的使用tqdm显示Python代码执行进度的实例代码,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!