默认的tqdm的滚动条的宽度很大,所以会使得总长度超过窗口一行所能显示的量,所以发生上下滚动
解决方法:初始化tqdm时,初始化行数参数ncols=10,这个值可以自己调:尽量大到不能引起上下滚动,同时满足美观的需求。
原来的代码
from tqdm import tqdm
import time
for i in tqdm(range(10000)):
time.sleep(0.001)
原来的效果
讲解:多行滚动,虽然能记录下每次迭代的信息,但如果这些信息对你来说不重要,这种上下滚动方式比较annoying..
优化后版本
from tqdm import tqdm
import
在Python编程中,`tqdm` 是一个非常实用的库,用于在终端或命令行界面显示进度条,为长时间运行的任务提供可视化反馈。默认情况下,`tqdm` 的进度条可能会因为宽度过大而超出单行显示范围,导致滚动条上下滚动,这可能会影响用户的查看体验。本篇文章将详细介绍如何通过设置 `ncols` 参数来避免这种滚动行为,以保持进度条在一行内滚动。
我们来看一下问题的背景。默认的 `tqdm` 初始化代码如下:
```python
from tqdm import tqdm
import time
for i in tqdm(range(10000)):
time.sleep(0.001)
```
这段代码会在执行时创建一个进度条,随着 `range(10000)` 的迭代,进度条会逐渐填充。如果进度条宽度超过了终端窗口的一行显示宽度,就会出现滚动现象,用户需要上下滚动查看进度。
为了消除这种滚动行为,我们需要在初始化 `tqdm` 时指定 `ncols` 参数,该参数代表进度条的宽度。设置合适的 `ncols` 值,确保进度条不会超过一行的宽度。例如,我们可以设置 `ncols=10`:
```python
from tqdm import tqdm
import time
for i in tqdm(range(10000), ncols=10):
time.sleep(0.001)
```
这样,即使在执行大量迭代时,进度条也会保持在一行内,避免了滚动条的上下移动。当然,你可以根据自己的终端窗口大小调整 `ncols` 的值,使其既满足不滚动的要求,又看起来美观。
需要注意的是,`ncols` 参数可以应用到各种 `tqdm` 的用法中,不仅限于简单的 `for` 循环。例如,如果你在使用 `multiprocessing` 或其他并发库时,同样可以利用这个参数来控制进度条的宽度。
此外,`tqdm` 还提供了许多其他参数和特性,如自定义文本、格式化选项、速度信息等,可以根据具体需求进行配置。对于那些希望进一步优化输出或者有特殊需求的开发者来说,`tqdm` 提供了足够的灵活性来定制进度条的行为。
总结起来,通过设置 `tqdm` 的 `ncols` 参数,我们可以轻松地控制进度条的宽度,防止其在终端窗口内上下滚动,提供更加友好的用户体验。了解并掌握这一技巧,可以帮助我们在编写Python脚本时更好地管理和展示长时间运行任务的进度。