Python tqdm模块详解:打造个性化的进度条

版权申诉
8 下载量 54 浏览量 更新于2024-09-11 收藏 212KB PDF 举报
"tqdm是Python中的一个进度条模块,用于显示执行过程中的进度,提供易用且可扩展的功能。其名称来源于阿拉伯语的‘进步’一词,并在西班牙语中有‘我太爱你’的意思。tqdm的安装可以通过pip或conda完成。使用tqdm主要有三种方式:一是直接对迭代类型进行包装;二是手动更新进度条;三是与命令行输出结合。" 在Python编程中,tqdm是一个非常实用的库,它允许开发者在执行耗时的操作时展示进度条,提升用户体验,尤其是在处理大量数据或长时间运行的任务时。下面我们将详细探讨tqdm的使用和功能。 1. **tqdm的基本概念** tqdm提供了一个简单的API,允许开发者将迭代器包装起来,自动创建并更新进度条。例如,当遍历一个列表时,只需将列表传递给tqdm,它会自动计算并显示进度。 2. **安装tqdm** 虽然tqdm不是Python的标准库,但安装非常方便,可以使用pip工具: ``` pip install tqdm -i https://pypi.tuna.tsinghua.edu.cn/simple/ ``` 如果你是Anaconda用户,可以使用conda命令安装: ``` conda install -c conda-forge tqdm ``` 3. **三大使用方式** a) **基于迭代类型**: 你可以直接将任何迭代器(如列表、元组等)传递给tqdm,它会自动跟踪进度。例如: ```python from tqdm import tqdm import time text = "" for char in tqdm(["a", "b", "c", "d"]): time.sleep(0.25) text += char ``` b) **手动更新进度**: 当你不能直接使用迭代器,需要手动控制进度更新时,可以使用with语句创建一个进度条对象,然后在循环中调用`update()`方法更新进度。例如: ```python with tqdm(total=100) as pbar: for i in range(10): time.sleep(0.01) pbar.update(1) ``` 或者不使用with语句,需要手动调用`close()`方法关闭进度条: ```python pbar = tqdm(total=100) for i in range(100): time.sleep(0.1) pbar.update(10) pbar.close() ``` c) **在命令行中使用**: tqdm还能与命令行工具结合,例如在find命令输出结果时显示进度。不过,这个特性可能需要根据具体环境进行调整。 4. **高级用法和自定义** tqdm支持多种自定义选项,如设置文本前缀、后缀,调整更新频率,改变进度条样式等。此外,还可以嵌套使用tqdm,以及在多线程和多进程环境中使用。 5. **tqdm与其他库的集成** tqdm可以很好地与许多其他Python库(如Pandas、Numpy、Scrapy等)集成,提供了在这些库操作中显示进度的能力。 tqdm是Python开发者的强大工具,能帮助优化代码的可读性和用户体验。无论是在数据分析、文件处理还是网络请求中,tqdm都能提供清晰的进度指示,使用户能够更好地了解程序的运行状态。

下载别人的数据集在YOLOV5进行训练发现出现报错,请给出具体正确的处理拌饭Plotting labels... C:\ProgramData\Anaconda3\envs\pytorch1\lib\site-packages\seaborn\axisgrid.py:118: UserWarning: The figure layout has changed to tight self._figure.tight_layout(*args, **kwargs) autoanchor: Analyzing anchors... anchors/target = 4.24, Best Possible Recall (BPR) = 0.9999 Image sizes 640 train, 640 test Using 0 dataloader workers Logging results to runs\train\exp20 Starting training for 42 epochs... Epoch gpu_mem box obj cls total labels img_size 0%| | 0/373 [00:00<?, ?it/s][ WARN:0@20.675] global loadsave.cpp:248 cv::findDecoder imread_('C:/Users/Administrator/Desktop/Yolodone/VOCdevkit/labels/train'): can't open/read file: check file path/integrity 0%| | 0/373 [00:00<?, ?it/s] Traceback (most recent call last): File "C:\Users\Administrator\Desktop\Yolodone\train.py", line 543, in <module> train(hyp, opt, device, tb_writer) File "C:\Users\Administrator\Desktop\Yolodone\train.py", line 278, in train for i, (imgs, targets, paths, _) in pbar: # batch ------------------------------------------------------------- File "C:\ProgramData\Anaconda3\envs\pytorch1\lib\site-packages\tqdm\std.py", line 1178, in __iter__ for obj in iterable: File "C:\Users\Administrator\Desktop\Yolodone\utils\datasets.py", line 104, in __iter__ yield next(self.iterator) File "C:\ProgramData\Anaconda3\envs\pytorch1\lib\site-packages\torch\utils\data\dataloader.py", line 633, in __next__ data = self._next_data() File "C:\ProgramData\Anaconda3\envs\pytorch1\lib\site-packages\torch\utils\data\dataloader.py", line 677, in _next_data data = self._dataset_fetcher.fetch(index) # may raise StopIteration File "C:\ProgramData\Anaconda3\envs\pytorch1\lib\site-packages\torch\utils\data\_utils\fetch.py", line 51, in fetch data = [self.dataset[idx] for idx in possibly_batched_index] File "C:\ProgramData\Anaconda3\envs\pytorch1\lib\site-packages\torch\utils\data\_utils\fetch.py", line 51, in <listcomp> data = [self.dataset[idx] for idx in possibly_batched_index] File "C:\Users\Administrator\Desktop\Yolodone\utils\datasets.py", line 525, in __getitem__ img, labels = load_mosaic(self, index) File "C:\Users\Administrator\Desktop\Yolodone\utils\datasets.py", line 679, in load_mosaic img, _, (h, w) = load_image(self, index) File "C:\Users\Administrator\Desktop\Yolodone\utils\datasets.py", line 634, in load_image assert img is not None, 'Image Not Found ' + path AssertionError: Image Not Found C:/Users/Administrator/Desktop/Yolodone/VOCdevkit/labels/train Process finished with exit code 1

2023-07-20 上传