python添加进度显示--Apple的学习笔记
2022-08-06 本文已影响0人
applecai
一,前言
今天做的一个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的人机交互内容。不过添加进度条只是临时的,优化提高速度才是王道。我只是玩一下哈~