针对我的当前项目,有一些代码片段速度较慢且我无法加快其速度。为了获得一些反馈,了解已完成的进度和剩余工作量,我创建了一个进度代码片段,如下所示。
当您查看最后一行时
sys.stdout.write("\r100%" + " "*80 + "\n")
我使用" "*80
来覆盖剩余的字符。有更好的清除行的方法吗?
(如果您发现剩余时间的计算错误,我也会很高兴。但这是另一个问题。)
进度片段
#!/usr/bin/env python
import time
import sys
import datetime
def some_slow_function():
start_time = time.time()
totalwork = 100
for i in range(totalwork):
# The slow part
time.sleep(0.05)
if i > 0:
# Show how much work was done / how much work is remaining
percentage_done = float(i)/totalwork
current_running_time = time.time() - start_time
remaining_seconds = current_running_time / percentage_done
tmp = datetime.timedelta(seconds=remaining_seconds)
sys.stdout.write("\r%0.2f%% (%s remaining) " %
(percentage_done*100, str(tmp)))
sys.stdout.flush()
sys.stdout.write("\r100%" + " "*80 + "\n")
sys.stdout.flush()
if __name__ == '__main__':
some_slow_function()
控制台
我大多数情况下使用ZSH,有时使用bash(我总是在Linux系统上)