我想在我的脚本中显示进度条,因为在处理大文件时需要花费大量时间来执行。我经历了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()
如何在上面的代码行中定义这个范围和最大值。
答案 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开始,通常会使用旋转的东西。