Python进度条魔法解密,任务进展新玩法!

更多资料获取

📚 个人网站:ipengtao.com


在日常编程和应用开发中,展示进度条是一种常见的技巧。不仅能够提供用户友好的体验,还可以显示任务执行的进度。Python作为一种多才多艺的编程语言,提供了多种方法来创建进度条。本篇文章将深入探讨这些方法,为您呈现各种实现进度条的技术和技巧。

基于Print语句的简单进度条

首先,从最简单的进度条开始,使用基本的Print语句来模拟一个简易进度条。

import time

for i in range(10):
    print(f'Progress: {"#" * (i + 1)}', end='\r')
    time.sleep(0.5)

在这段代码中,time.sleep()模拟了一个任务的执行,每次循环打印一个带有不同数量#的文本以展示进度。通过end='\r'实现在同一行中更新进度条,产生动态效果。

使用tqdm库创建进度条

tqdm是一个功能强大的库,可以简单快速地生成进度条,而无需手动处理输出。

以下是使用tqdm库创建进度条的示例:

from tqdm import tqdm
import time

for i in tqdm(range(10)):
    time.sleep(0.5)

tqdm通过包装迭代器对象,自动显示进度条,并提供众多自定义选项。

进度条与多线程/多进程

对于多线程或多进程任务,进度条变得更加复杂。

下面是使用concurrent.futures库创建多线程的进度条示例:

from concurrent.futures import ThreadPoolExecutor, as_completed
from tqdm import tqdm
import time

def task(i):
    time.sleep(1)
    return i

with ThreadPoolExecutor(max_workers=5) as executor:
    futures = [executor.submit(task, i) for i in range(20)]
    for completed in tqdm(as_completed(futures), total=len(futures)):
        pass

这个示例展示了如何利用多线程并配合tqdm库来展示任务的并发执行情况,同时更新进度条。

GUI界面中的进度条

在GUI应用程序中,进度条是用户友好界面的关键元素之一。tkinter是Python标准库中的一个GUI工具包,可用于创建GUI应用程序,以下是在tkinter中创建进度条的示例:

import tkinter as tk
from tkinter import ttk
import time

def run_progressbar():
    progress_bar['maximum'] = 100
    for i in range(101):
        progress_bar['value'] = i
        root.update_idletasks()
        time.sleep(0.05)

root = tk.Tk()
root.title('GUI进度条示例')

progress_bar = ttk.Progressbar(root, orient='horizontal', length=300, mode='determinate')
progress_bar.pack(pady=20)

start_button = tk.Button(root, text='开始进度条', command=run_progressbar)
start_button.pack(pady=10)

root.mainloop()

这段代码展示了如何使用tkinter创建一个简单的GUI界面,包含了一个进度条和一个按钮,通过点击按钮启动进度条的运行。

利用其他库实现自定义和特殊效果的进度条

在进度条制作的世界里,不仅局限于基本的文本或标准样式。除了上文提及的方法外,还有一些特殊的库,可以为你的进度条增添更多创意和个性化。

Rich库

Rich库是一个功能强大的库,提供了在命令行中创建富文本和样式的功能,同样也能用来创建精美的进度条。以下是一个简单的示例:

from rich.progress import Progress

with Progress() as progress:
    task = progress.add_task("[green]Downloading...", total=100)
    while not progress.finished:
        progress.update(task, advance=10)

Rich库允许你为进度条添加颜色、样式和自定义文本,使其更具有视觉吸引力。

alive-progress库

alive-progress库则提供了更为生动的进度条体验,通过动画效果增强用户感知。以下是一个简单的使用示例:

from alive_progress import alive_bar
import time

with alive_bar(100) as bar:
    for i in range(100):
        time.sleep(0.1)
        bar()

alive-progress库会在任务执行时展现出动态、有趣的进度条效果,为用户提供更生动的体验。

总结

本文介绍了Python中多种创建进度条的方法,从基础的Print语句到tqdm库,再到GUI界面的展示,甚至到自定义效果的进度条。无论是简单的任务还是复杂的多线程/多进程应用,Python都有相应的工具和库来满足您的需求。掌握这些技巧能够让您的项目更加直观、互动性更强,提升用户体验,也能更好地展示任务的执行进度。愿本文内容能够帮助您更全面地了解和应用Python中的进度条技术!


Python学习路线

在这里插入图片描述

更多资料获取

📚 个人网站:ipengtao.com

如果还想要领取更多更丰富的资料,可以点击文章下方名片,回复【优质资料】,即可获取 全方位学习资料包。

在这里插入图片描述
点击文章下方链接卡片,回复【优质资料】,可直接领取资料大礼包。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux 防火墙

目录 安全技术 防火墙的分类 按保护范围划分 按实现方式划分 按网络协议划分 应用层防火墙(7层) 防火墙的工作原理 linux防火墙的基本认识 防火墙工具介绍 1.iptables 2.firewalld 3.nftables 安全技术 —— 入侵检测系统(Intru…

HGNN+笔记

1.Title HGNN: General Hypergraph Neural Networks(Yue Gao; Yifan Feng; Shuyi Ji; Rongrong Ji)【IEEE Transactions on Pattern Analysis and Machine Intelligence 2023】 2.Conclusion This paper extend the original conference version HGNN,…

送女朋友一个猜数字小游戏,猜对了会显示爱心(给你心爱的他或她一个惊喜)

起因是我在学习C语言完成老师布置C语言写一个猜数字的作业,突发奇想,能不能在这个猜对了之后弹出一个不一样的页面,然后就试试看能不能实现。基本思路是这样的: 1:先写一个C语言的猜数字的小游戏,在我上个文…

Unity Meta Quest 一体机开发(八):【手势追踪】实现 Hand Grab 扔物体功能

文章目录 📕教程说明📕设置刚体和碰撞体📕给物体添加 Physics Grabbable 脚本📕给手部添加 Hand Velocity Calculator 物体 此教程相关的详细教案,文档,思维导图和工程文件会放入 Spatial XR 社区。这是一…

基于springboot 学生学情预警系统-计算机毕设 附源码57567

springboot 学生学情预警系统 摘 要 科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运…

Xshell全局去除提示音

使用Xshell的时候经常会按TAB或者一些操作指令的时候的时候听到提示音,非常的烦 通常来说在Xshell中可以单独修改每一个会话的属性,将提示音关闭,但是新增的会话依然带有提示音,还得一个个的关闭,非常麻烦,…

NAND Flash和NOR Flash的异同

NAND Flash和NOR Flash是两种常见的闪存类型。 NOR Flash是Intel于1988年首先开发出来的存储技术,改变了原先由EPROM和EEPROM一统天下的局面。 NAND Flash是东芝公司于1989年发布的存储结构,强调降低每比特的成本,更高的性能,并…

ESP32-Web-Server编程综合项目1-结合 Web Server 实现 WiFi 配网和网页 OTA 更新

ESP32-Web-Server编程综合项目1-结合 Web Server 实现 WiFi 配网和网页 OTA 更新 概述 前述的内容多是一个个小功能的演示,本章节讲述一些实际项目中使用到的综合项目。 首先要讲述的案例是通过ESP32 上的 Web Server 实现对 ESP32 的 WiFi 配网和网页 OTA 更新功…

4R技术(AR、VR、MR、XR)傻傻分不清,看完这篇你就懂了!

在数字化革命的浪潮下,涌现了许多VR、AR和MR产品,尽管大家对VR比较熟悉,但对AR、MR和XR的了解相对较少,这几者同时存在会更令人困惑。下面我们就来了解一下这4种技术的区别。先用一张图来区分它们的区别: 1.虚拟现实技…

inux基础项目开发1:量产工具——业务系统(七)

前言: 前面我们已经构造出来显示系统、输入系统、文字系统、UI系统、页面系统,这个项目百分之八十需要实现的都已经构建出来了,最后让我们对这个项目进行最后一项系统的搭建,也就是业务系统,说到业务大家应该就知道我们…

Python安装步骤介绍

本文将介绍Python安装的详细步骤如下: 下载 python安装 python配置环境变量(安装时勾选配置环境变量的则无需此步骤) 一、python下载 官网:Download Python | Python.org 根据电脑位数下载所需的版本 二、Python安装 1.打开安…

31-WEB漏洞-文件操作之文件包含漏洞全解

31-WEB漏洞-文件操作之文件包含漏洞全解 一、本地包含1.1、无限制包含漏洞文件1.2、有限制包含漏洞文件1.2.1、绕过方法1.2.1.1、%00截断1.2.1.2、长度截断 二、远程包含2.1、无限制包含漏洞文件2.2、有限制包含漏洞文件 三、各种协议流提交流3.1、各协议的利用条件和方法3.1.1…

mysql的几种索引

mysql可以在表的一列、或者多列上创建索引,索引的类型可以选择,如下: 普通索引(KEY) 普通索引可以提高查询效率。在表的一列、或者多列上创建索引。 每个表可以创建多个普通索引。 例如,下面示例&#…

计算机网络TCP篇②

一、TCP 重传、滑动窗口、流量控制、拥塞控制 1.1、重传机制 在 TCP 中,当发送端的数据达到接受主机时,接收端主机会返回一个确认应答消息,表示已收到消息。但是在复杂的网络中,并一定能顺利正常的进行数据传输,&…

固态硬盘与机械硬盘的区别

盘、磁道、扇区、柱面,这些都是机械硬盘的概念,固态硬盘没有这些东西,固态硬盘和机械硬盘虽然都叫硬盘,但是在原理层面有着本质上的区别。 速印机(理想、荣大等)、复印机(夏普、东芝、理光、佳能…

51爱心流水灯32灯炫酷代码

源代码摘自远眺883的文章,大佬是30个灯的,感兴趣的铁汁们可以去看看哦~(已取得原作者的许可):基于STC89C51单片机设计的心形流水灯软件代码部分_单片机流水灯代码_远眺883的博客-CSDN博客 由于博主是个小菜鸡&#xff…

perl脚本批量处理代码中的中文注释乱码的问题

代码中统一使用utf-8编码是最好的,但是有一些多人合作的项目或者一些历史遗留代码,常见一些中文注释乱码的问题。这里以一个开源项目evpp为例子 evpp。以项目中的一个commit id为例: 477033f938fd47dfecde43c82257cd286d9fa38e , …

种群和种群之间连接的设计

我们知道神经元的创建方式是以种群为基础的,一个种群内的所有神经元的参数都一样,而种群与种群之间的连接也是随机概率的。所以我们首先应该设计一个Population的结构,考虑其需要的元素有神经元gid集合和种群好,所设计数据结构如下…

Python必备工具shelve与dbm全面解析!

更多资料获取 📚 个人网站:ipengtao.com 当涉及存储大量数据并且需要高效访问时,Python开发人员常常寻找适当的工具。shelve和dbm模块是Python中用于本地持久化存储数据的两个强大工具。它们允许开发人员以键值对的形式存储数据,…

【开源】基于JAVA的医院门诊预约挂号系统

项目编号: S 033 ,文末获取源码。 \color{red}{项目编号:S033,文末获取源码。} 项目编号:S033,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 功能性需求2.1.1 数据中心模块2.1.2…