Python实现简单进度条的两种方法及异步封装
本文介绍了在Python中实现简单进度条的两种方法。首先展示了基于循环的同步进度条示例,包括固定百分比和周期加载两种形式。随后提供了一种异步进度条的封装类,支持在耗时操作前后通过start和stop方法进行开启与停止,适用于需要非阻塞显示的异步场景。
近期编写Python脚本时涉及部分实用技巧,特此整理记录。内容虽基础但日常开发中较为常见。
这里提供两个可直接运行的进度条示例代码:
# coding=utf-8
import sys
import time
# width:宽度, percent:百分比
def progress(width, percent):
print "\r%s %d%%" % (('%%-%ds' % width) % (width * percent / 100 * '='), percent),
if percent >= 100:
print
sys.stdout.flush()
# 示例一、0%--100%
def demo1():
for i in xrange(100):
progress(50, (i + 1))
time.sleep(0.1)
## 示例二、周期加载
def demo2():
i = 19
n = 200
while n > 0:
print "\t\t\t%s \r" % (i * "="),
i = (i + 1) % 20
time.sleep(0.1)
n -= 1
demo1()
demo2()
此外,封装了一个简单的异步进度条类。该组件可在执行耗时任务前启动显示,并在任务结束后停止更新。
import time
import thread
import sys
class Progress:
def __init__(self):
self._flag = False
def timer(self):
i = 19
while self._flag:
print "\t\t\t%s \r" % (i * "="),
sys.stdout.flush()
i = (i + 1) % 20
time.sleep(0.05)
print "\t\t\t%s\n" % (19 * "="),
thread.exit_thread()
def start(self):
self._flag = True
thread.start_new_thread(self.timer, ())
def stop(self):
self._flag = False
time.sleep(1)
具体调用方式如下:
progress = Progress() progress.start() time.sleep(5) progress.stop()
以上内容为本文核心部分,希望能对读者的学习有所启发,同时也欢迎大家继续支持本平台。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













