python添加进度显示--Apple的学习笔记

一,前言

今天做的一个python工具,最后list转dataframe觉得有点慢,所以想着要优化速度的。但是最后就是把for循环优化为map加lambda,但是依然很慢要9s,原因是用了python内部库函数做hex转换,若不进行hex转换就很快只要2s。所以我索性做一个进度条吧,缓解下等待的焦虑情绪。

二,调研

之前QT我做过进度条,最简单的就是printf在原地打印值,那么也不需要用到库,也不用图形。那么值需要用到python print的技巧。

三,解决问题

1. 要用覆盖方式打印,如何实现?

答:“\r”是回车的操作。即光标会移动到初始的位置,并且覆盖掉之前的内容。而不是按顺序移动。

2. 怎么还是会一行行输出的?

答:print的默认值end参数是进入下一行,所以要将end参数设置为空。

四,代码

print("\r完成进度{:.2f}%".format(len(self.df.index) * 100 / self.frameCnt), end="")

效果如下:
完成进度100.00%

五,小结

就那么一个小功能也值得花费20分钟研究及添加一下。原因就是我觉得此功能很重要,类似于HMI的人机交互内容。不过添加进度条只是临时的,优化提高速度才是王道。我只是玩一下哈~

你可能感兴趣的:(python添加进度显示--Apple的学习笔记)