Python 进度条tqdm应用记录

news2024/11/8 19:45:30

tqdm 简介

tqdm 是一个非常流行的 Python 库,用于快速添加进度条到循环中。它可以方便地集成到脚本中,并且支持多种类型的迭代器。

安装

首先确保你安装了 tqdm。如果还没有安装,可以通过 pip 安装它(如果要在 jupyter notebook 上使用,还需要ipywidgets支持):

pip install tqdm

使用方法举例

1. 进度条的基本使用

from tqdm import tqdm
import time

# 创建一个简单的进度条
for i in tqdm(range(100)):
    time.sleep(0.01)  # 模拟耗时操作

2. 自定义描述信息

from tqdm import tqdm
import time

# 添加描述信息
for i in tqdm(range(100), desc="Processing"):
    time.sleep(0.01)

3. 设置总进度

from tqdm import tqdm
import time

# 显示总进度
for i in tqdm(range(100), total=100):
    time.sleep(0.01)

4. 更新进度

from tqdm import tqdm
import time

# 手动更新进度条
pbar = tqdm(total=100)
for i in range(100):
    time.sleep(0.01)
    pbar.update(1)  # 更新进度
pbar.close()

5. 多个进度条

from tqdm import tqdm
import time

# 同时显示多个进度条
with tqdm(total=100, desc="First") as pbar1, tqdm(total=100, desc="Second") as pbar2:
    for i in range(100):
        time.sleep(0.01)
        pbar1.update(1)
        pbar2.update(1)

6. 显示额外信息

采用 tqdm.write 函数,可以输出额外信息。

from tqdm import tqdm
import time

# 在进度条后面显示额外信息
for i in tqdm(range(100), desc="Processing", unit="it", unit_scale=True):
    time.sleep(0.01)
    tqdm.write(f"Processing {i}")

7. 动态更新额外信息

from tqdm import tqdm
import time

# 动态更新额外信息
pbar = tqdm(total=100, desc="Processing")
for i in range(100):
    time.sleep(0.01)
    pbar.set_postfix_str(f"Processing {i}")
    pbar.update(1)
pbar.close()

应用实例

1. 在脚本文件 .py 中使用进度条

import pandas as pd
import tqdm
from bad import BigAData

bad = BigAData()
stock_count = bad.get_stock_count()
progress = tqdm.tqdm(total=stock_count, desc='获取沪深A股列表', unit='stock')
stock_list = bad.get_stock_name_list(num_per_page=100, progress_bar=progress, stock_count=stock_count)
pd.DataFrame(stock_list).to_excel('沪深A.xlsx', index=False)

效果如下:
17%
100%

2. 在 jupyter notebook 文件 .ipynb 中使用进度条

import pandas as pd
from tqdm.notebook import tqdm
from bad import BigAData

bad = BigAData()
stock_count = bad.get_stock_count()
progress = tqdm(total=stock_count, desc='获取大A股票名录', unit='stock')
stock_list = bad.get_stock_name_list(num_per_page=100, progress_bar=progress, stock_count=stock_count)
pd.DataFrame(stock_list).to_excel('大A名录.xlsx', index=False)

jupyter notebook 100%

3. 作为实例函数的输入参数

    # 获取股票列表
    def get_stock_name_list(self, node='hs_a', stock_count=None, num_per_page=100, progress_bar=None):
        ''' 
        获取股票列表 
        node: 节点代码,如hs_a表示沪深A股,sh_a表示沪市A股,sz_a表示深市A股,hs_bjs表示北交所,cyb表示创业板。
        stock_count: 股票总数
        num_of_page: 每页数据量
        progress_bar: 进度条
        return: 股票列表
        '''
        if stock_count is None:
            stock_count = self.get_stock_count(node)
        if stock_count is not None:
            stock_list = []
            for i in range(1, int(stock_count/num_per_page)+2):
                data = self.get_market_quotations(node, i, num_per_page)
                for item in data:
                    stock_list.append({'symbol': item['symbol'], 'code': item['code'], 'name': item['name']})
                    if progress_bar is not None:
                        progress_bar.update(1)
            return stock_list
        else:
            return None 

小结

以上就是 tqdm 的一些用法。我们可以根据自己的需求调整这些参数来定制进度条的显示效果。tqdm 的灵活性使得它非常适合用于各种场景下的进度跟踪。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2072715.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

游戏开发设计模式之单例模式

单例模式(Singleton Pattern)是一种常见的设计模式,其主要目的是确保一个类在整个程序的生命周期中只有一个实例,并提供一个全局访问点来获取这个实例。在游戏开发中,单例模式具有广泛的应用和重要的作用。 单例模式的…

如何评估Redis的性能

如果系统中出现了大 key、热 key 等,往往会导致 Redis 变慢,但是这个慢该如何界定?多久算慢?1秒还是3秒? 这个肯定是没有标准答案,因为这个和你的硬件设备有关。 硬件差一些,平时响应时间都是…

OSPF路由原理详解与关键点

目录 一. OSPF简介: 二. OSPF原理描述: 三. OSPF的核心内容: 四. OSPF的邻居关系和邻接 五. LSA在各区域中传播的支持情况 一. OSPF简介: 开放式最短路径优先OSPF(Open Shortest Path First)是IETF组织开发的一个基于链路状态的内部网关协议&…

打造编程学习的知识宝库:高效笔记与整理技巧

在编程的海洋中,知识的深度和广度都是难以估量的。要想在这片海洋中航行而不迷失方向,一个高效的笔记系统是不可或缺的。本文将探讨如何建立一个既能快速记录又易于回顾的笔记系统,以及如何在繁忙的学习中保持笔记的条理性。 目录 一、确定笔…

数三角形(二)》-筛除法斜线结论

算法思路: 1、一个直观的思路是筛除法,即:答案总数-三点共线的种数 总数易求得,为组合数C((n1)*(m1),3),考虑到n、m数值范围,考虑用long long。 2、三点共线的情况有: (1&#xff09…

Linux驱动学习之按键读取

按键读取我们需要实现read函数, read 函数的 第二个参数被__user 修饰,原则上在内核层我们不能直接访问,需要调用 copy_to_user()这个函数,从内核获取数据到上层。 copy_to_user(void __user volatile * to, const void * from,…

C语言笔试题(指针、数组、整数在内存中的存储、结构体......)

文章目录 1.选择题2.代码题2.1 模拟实现strncat2.2 模拟实现strncpy2.3 编写判断大小端程序2.4 模拟实现atoi2.5 BC38 变种水仙花数2.6 BC98 序列中删除指定数字 今天我们一起来看一些题目 1.选择题 解析如下: 正确选项:B A.参数错误;D.返回…

什么是Redis集群的脑裂问题?

目录 一、脑裂的发生 二、脑裂的危害 三、如何避免脑裂? 四、能彻底解决脑裂吗? 所谓脑裂,就像他的名字一样,大脑裂开了,一般来说就是指一个分布式系统中有两个子集,然后每个子集都有一个自己的大脑(Le…

【Excal】And函数

奖金评定说明 业绩低于6000,奖金为100 业绩大于等于6000且小于10000,奖金为200 业绩大于等于10000,奖金为500 然后按回车健 下拉填充

BurpSuite2024.7.3专业版

前言 Burp Suite是一个无需安装软件,下载完成后,直接从命令行启用即可。开箱即可使用支持LInux/Windows/Mac 01更新介绍 2024.7.13版本界面大改动此版本引入了重大的性能升级、对拦截功能的重大增强,以及在审计项目表中新增了扫描插入点列。…

【Nature】在科研中应用ChatGPT:如何与数据对话

随着人工智能技术的迅猛发展,大型语言模型(LLMs)正逐渐成为科研领域的一种创新工具。这些模型通过自然语言处理技术,使得研究人员能够以直观的方式与数据进行交互,从而简化了数据分析和解释的过程。在《自然》杂志2024…

103.二叉树的锯齿形层序遍历

1.题目描述 给你二叉树的根节点 root ,返回其节点值的 锯齿形层序遍历 。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。 示例 1: 输入:root [3,9,20,nul…

Unity-可分组折叠的Editor

Unity-可分组折叠的Editor 🥗功能介绍🍭用法 🥗功能介绍 在序列化的字段上标记特性:[FoldoutGroup(“xxx”)],inspector上就会被分组折叠显示。 (没有被指定的字段自动放到Default组中) 传送门&#x1f30…

如何用Java SpringBoot和Vue搭建高效的OA办公管理系统?

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

深度学习--复制机制:CopyNet 模型在序列到序列模型中的应用以及代码实现

CopyNet 是一种特别设计的序列到序列(Seq2Seq)模型,旨在更好地处理那些在输出序列中需要直接复制输入序列中的部分或全部内容的任务。它在机器翻译、摘要生成、文本复述等任务中有广泛的应用,尤其是在输入和输出有显著重叠的场景。…

Spring--三级缓存机制

一、什么是三级缓存 就是在Bean生成流程中保存Bean对象三种形态的三个Map集合&#xff0c;如下&#xff1a; // 一级缓存Map 存放完整的Bean&#xff08;流程跑完的&#xff09; private final Map<String, Object> singletonObjects new ConcurrentHashMap(256);// 二…

51单片机——LED灯控制

1、LED介绍 中文名&#xff1a;发光二极管 外文名&#xff1a;Light Emitting Diode 简称&#xff1a;LED 用途&#xff1a;照明、广告灯、指引灯、屏幕 2、LED原理图 电阻在原理图上标注为1k&#xff0c;表示这是1千欧的电阻&#xff0c;实际在电路板上的表示是102 102解…

HarmonyOs应用权限申请,system_grant和user_grant区别。本文附头像上传申请user-grant权限代码示例

HarmonyOs应用权限申请&#xff0c;system_grant和user_grant区别。本文附头像上传申请user-grant权限代码示例 system_grant&#xff08;系统授权&#xff09; system_grant指的是系统授权类型&#xff0c;在该类型的权限许可下&#xff0c;应用被允许访问的数据不会涉及到用户…

【大数据算法】一文掌握大数据算法之:排序链表搜索的亚线性算法。

排序链表搜索的亚线性算法 1、引言2、平面图直径问题的亚线性算法2.1 定义2.2 核心原理2.2.1 跳表2.2.2 跳跃搜索2.2.3 分块搜索 2.3 应用场景2.4 算法公式2.5 代码示例 3、总结 1、引言 小屌丝&#xff1a;鱼哥&#xff0c;这茶味道怎么样&#xff1f; 小鱼&#xff1a;嗯&am…

计算机毕业设计选题推荐-保险业务管理系统-Java/Python项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…