在脚本中使用python进度条

时间:2011-09-19 07:01:07

标签: python

我想在我的脚本中显示进度条,因为在处理大文件时需要花费大量时间来执行。我经历了python progressbar module

并且示例也很好并且非常有用,但是根据示例,所有值都是预定义的。因为我们无法猜测程序或函数的最大执行时间。所以我无法弄清楚我应该如何使用进度我的sctipt栏功能

for data in files:
     crawl_data(data)

这是crawl_data函数需要时间,所以如何设置进度条值

pbar = ProgressBar(widgets=[Percentage(), Bar()], maxval=300).start()
for i in range(300):
    time.sleep(0.01)
    pbar.update(i+1)
pbar.finish()

如何在上面的代码行中定义这个范围和最大值。

2 个答案:

答案 0 :(得分:2)

这就是我的工作。

标准输出

Working: | Elapsed Time: 0:00:10  

的Python

import time
import progressbar
import threading

def crawl_data(data):
    # sleep for 10 seconds
    time.sleep(10)
# end of def crawl_data

def main():
    data = 'some data'
    widgets = ['Working: ', progressbar.AnimatedMarker(), ' ',
                   progressbar.Timer()]
    pbar = progressbar.ProgressBar(widgets=widgets)
    # creating thread to run crawl_data()
    thread = threading.Thread(target=crawl_data,
                              args=(data,))
    thread.daemon = True
    # starting thread and progress bar
    thread.start()
    pbar.start()
    i = 1
    # continuous loop until crawl_data thread is not alive
    while True:
        # update every second
        time.sleep(1)
        pbar.update(i)
        if not thread.is_alive():
            pbar.finish()
            break
        # end of if thread is not alive
        i += 1
    # end of continuous loop until crawl_data thread is not alive
    # prints a new line
    print
# end of def main

# run main
main()

答案 1 :(得分:0)

如果你无法猜测执行时间,进度条是没有价值的(记住大多数旧的MS进度条?)。你可能正在寻找像活动指标这样的东西。从web2.0开始,通常会使用旋转的东西。