百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Python控制台进度图神器(python控制台在哪)

off999 2024-09-14 07:16 97 浏览 0 评论

前言

有时候在使用Python处理比较耗时操作的时候,为了便于观察处理进度,这时候就需要通过进度条将处理情况进行可视化展示,以便我们能够及时了解情况。这对于第三方库非常丰富的Python来说,想要实现这一功能并不是什么难事。

tqdm就能非常完美的支持和解决这些问题,可以实时输出处理进度而且占用的CPU资源非常少,支持windows、Linux、mac等系统,支持循环处理、多进程、递归处理、还可以结合linux的命令来查看处理情况、结合pandas,等进度展示。

大家先看看tqdm的进度条效果

安装

github地址:https://github.com/tqdm/tqdm

想要安装tqdm也是非常简单的,通过pipconda就可以安装,而且不需要安装其他的依赖库

pip安装

pip install tqdm

conda安装

conda install -c conda-forge tqdm

迭代对象处理

对于可以迭代的对象都可以使用下面这种方式,来实现可视化进度,非常方便

from tqdm import tqdm
import time
for i in tqdm(range(100)):
 time.sleep(0.1)
 pass

在使用tqdm的时候,可以将tqdm(range(100))替换为trange(100)代码如下

from tqdm import tqdm,trange
import time
for i in trange(100):
 time.sleep(0.1)
 pass

观察处理的数据

通过tqdm提供的set_description方法可以实时查看每次处理的数据

from tqdm import tqdm
import time
pbar = tqdm(["a","b","c","d"])
for c in pbar:
 time.sleep(1)
 pbar.set_description("Processing %s"%c)

手动设置处理的进度

通过update方法可以控制每次进度条更新的进度

from tqdm import tqdm
import time
#total参数设置进度条的总长度
with tqdm(total=100) as pbar:
 for i in range(100):
 time.sleep(0.05)
 #每次更新进度条的长度
 pbar.update(1)

除了使用with之外,还可以使用另外一种方法实现上面的效果

from tqdm import tqdm
import time
#total参数设置进度条的总长度
pbar = tqdm(total=100)
for i in range(100):
 time.sleep(0.05)
 #每次更新进度条的长度
 pbar.update(1)
#关闭占用的资源
pbar.close()

linux命令展示进度条

不使用tqdm

$ time find . -name '*.py' -type f -exec cat \{} \; | wc -l
857365
real 0m3.458s
user 0m0.274s
sys 0m3.325s

使用tqdm

$ time find . -name '*.py' -type f -exec cat \{} \; | tqdm | wc -l
857366it [00:03, 246471.31it/s]
857365
real 0m3.585s
user 0m0.862s
sys 0m3.358s

指定tqdm的参数控制进度条

$ find . -name '*.py' -type f -exec cat \{} \; |
 tqdm --unit loc --unit_scale --total 857366 >> /dev/null
100%|███████████████████████████████████| 857K/857K [00:04<00:00, 246Kloc/s]
$ 7z a -bd -r backup.7z docs/ | grep Compressing |
 tqdm --total $(find docs/ -type f | wc -l) --unit files >> backup.log
100%|███████████████████████████████▉| 8014/8014 [01:37<00:00, 82.29files/s]

自定义进度条显示信息

通过set_descriptionset_postfix方法设置进度条显示信息

from tqdm import trange
from random import random,randint
import time
with trange(100) as t:
 for i in t:
 #设置进度条左边显示的信息
 t.set_description("GEN %i"%i)
 #设置进度条右边显示的信息
 t.set_postfix(loss=random(),gen=randint(1,999),str="h",lst=[1,2])
 time.sleep(0.1)
from tqdm import tqdm
import time
with tqdm(total=10,bar_format="{postfix[0]}{postfix[1][value]:>9.3g}",
 postfix=["Batch",dict(value=0)]) as t:
 for i in range(10):
 time.sleep(0.05)
 t.postfix[1]["value"] = i / 2
 t.update()

多层循环进度条

通过tqdm也可以很简单的实现嵌套循环进度条的展示

from tqdm import tqdm
import time
for i in tqdm(range(20), ascii=True,desc="1st loop"):
 for j in tqdm(range(10), ascii=True,desc="2nd loop"):
 time.sleep(0.01)

在pycharm中执行以上代码的时候,会出现进度条位置错乱,目前官方并没有给出好的解决方案,这是由于pycharm不支持某些字符导致的,不过可以将上面的代码保存为脚本然后在命令行中执行,效果如下

多进程进度条

在使用多进程处理任务的时候,通过tqdm可以实时查看每一个进程任务的处理情况

from time import sleep
from tqdm import trange, tqdm
from multiprocessing import Pool, freeze_support, RLock
L = list(range(9))
def progresser(n):
 interval = 0.001 / (n + 2)
 total = 5000
 text = "#{}, est. {:<04.2}s".format(n, interval * total)
 for i in trange(total, desc=text, position=n,ascii=True):
 sleep(interval)
if __name__ == '__main__':
 freeze_support() # for Windows support
 p = Pool(len(L),
 # again, for Windows support
 initializer=tqdm.set_lock, initargs=(RLock(),))
 p.map(progresser, L)
 print("\n" * (len(L) - 2))

pandas中使用tqdm

import pandas as pd
import numpy as np
from tqdm import tqdm
df = pd.DataFrame(np.random.randint(0, 100, (100000, 6)))
tqdm.pandas(desc="my bar!")
df.progress_apply(lambda x: x**2)

递归使用进度条

下面的代码是实现递归遍历文件夹

from tqdm import tqdm
import os.path
def find_files_recursively(path, show_progress=True):
 files = []
 # total=1 assumes `path` is a file
 t = tqdm(total=1, unit="file", disable=not show_progress)
 if not os.path.exists(path):
 raise IOError("Cannot find:" + path)
 def append_found_file(f):
 files.append(f)
 t.update()
 def list_found_dir(path):
 """returns os.listdir(path) assuming os.path.isdir(path)"""
 try:
 listing = os.listdir(path)
 except:
 return []
 # subtract 1 since a "file" we found was actually this directory
 t.total += len(listing) - 1
 # fancy way to give info without forcing a refresh
 t.set_postfix(dir=path[-10:], refresh=False)
 t.update(0) # may trigger a refresh
 return listing
 def recursively_search(path):
 if os.path.isdir(path):
 for f in list_found_dir(path):
 recursively_search(os.path.join(path, f))
 else:
 append_found_file(path)
 recursively_search(path)
 t.set_postfix(dir=path)
 t.close()
 return files
find_files_recursively("E:/")

注意

在使用tqdm显示进度条的时候,如果代码中存在print可能会导致输出多行进度条,此时可以将print语句改为tqdm.write,代码如下

for i in tqdm(range(10),ascii=True):
 tqdm.write("come on")
 time.sleep(0.1)

相关推荐

趣书网txt小说下载txt电子(趣书网txt电子书网站)

网站域名:qutxt.com  趣书网(www.qutxt.com)为广大网友提供有趣的好看的小说阅读服务,全站小说免费阅读并且无弹窗,趣书网是最值得你收藏的看小说读小说网站。...

搜狗输入法手机版官方免费下载
  • 搜狗输入法手机版官方免费下载
  • 搜狗输入法手机版官方免费下载
  • 搜狗输入法手机版官方免费下载
  • 搜狗输入法手机版官方免费下载
电脑键盘五笔字根表(电脑键盘五笔字根表口诀)

五笔字根表口诀助记词(王码86版)G王旁青头戋(兼)五一F土士二干十寸雨D大犬三(羊)古石厂S木丁西A工戈草头右框七H目具上止卜虎皮J日早两竖与虫依K口与川,字根稀L田甲方框四车力M...

itools官方下载官网(itools2.0下载)

itools显示无法安装驱动组件的原因和解决方法如下1、关闭程序本身自动下载驱动的进程;2、点击工具页面【已连接,无法识别】链接;3、点击方法三启动修复工具【启动修复】功能,然后点击修复等待组件修复程...

手机金山毒霸下载(下载一个金山毒霸)

1,金山毒霸的默认安装目录文件为“kingsoftantivirus”,所以安装时没有更改过安装路径的话,金山毒霸在电脑上的文件夹名称是“kingsoftantivirus”。2,金山毒霸默认安装...

腾讯游戏app下载(腾讯游戏app)

为什么电脑版的腾讯会议下载完以后就被阻止了?如果你遇到这种情况,可能是因为你的电脑上面下载的腾讯会议不是。正规渠道下载的,或者不是正版的腾讯会议,所以你下载的腾讯会议。有可能中了病毒,你可以用你的电脑...

亚马逊电子书免费下载网站(亚马逊电子书免费资源)

在亚马逊电子书停运后,你可以尝试以下方法下载小说: 1.使用其他电子书平台:有很多其他的电子书平台,如KindleUnlimited、AppleBooks、GooglePlayBo...

什么小说软件最全还免费(笔趣阁app下载)

最近新出了一个小说阅读器,好像叫新免小说阅读器,我自己也去下载了来看了一下,却是还挺不错的,总结了一下几个有点:1、完全免费,确实是免费的,没有充值的接口,问过客服也说是一款免费的软件,不像很多小说,...

游戏中心app(网易游戏中心app)

OPPO游戏中心下载游戏的方法:你可以点击顶部搜索栏输入游戏名称直接下载,也能在游戏中心的「精选」页面查看每日推荐游戏。点击「分类」筛选心仪的游戏,「排行」页面浏览热门内容。碰到喜欢的游戏,点击「安装...

迅雷播放器(迅雷播放器不支持此类视频文件怎么办)
迅雷播放器(迅雷播放器不支持此类视频文件怎么办)

特点不同、优势不同,一个是app一个是插件一、指代不同1、迅雷看看播放器:是迅雷公司出品的一款在线播放插件,采用P2P点对点传输技术,可以在线流畅观看高清晰电影。2、迅雷影音:是一款迅雷公司制作的视频播放软件,可播放各类高清视频。二、特点不...

2026-01-24 04:51 off999

在线翻译成中文(越南语在线翻译成中文)
  • 在线翻译成中文(越南语在线翻译成中文)
  • 在线翻译成中文(越南语在线翻译成中文)
  • 在线翻译成中文(越南语在线翻译成中文)
  • 在线翻译成中文(越南语在线翻译成中文)
浏览器在线使用(在浏览器上)

浏览器用法:1、打开我的电脑,在我的电脑中找到【C盘】进入到C盘文件夹中;2、在C盘文件夹中,找到【ProgramFiles(X86)】这个文件夹,进入到其中; 1、点击开始菜单,接着找...

斗地主网页版(欢乐斗地主网页版)

1.是两个版本在运行2.这是因为电脑欢乐斗地主可以有不同的版本,每个版本可能有不同的功能或者设计,所以可以同时存在多个版本在运行。3.这种情况下,可能是为了满足不同用户的需求或者提供不同的游戏体...

比早游戏更好的平台(早游戏相似的游戏盒)

你好,这边推荐你用及时用车,及时用车这款app目前挂靠在高的旗下平台。双方正在推出免佣活动。早高峰7点~9点这个时间段及时用车,这边是免收佣金的,乘客付多少,司机得多少,可以轻松跑出高额流水。其次,中...

qq下载中心(qq下载.cn)

可以通过解除保护模式页面,查看QQ帐号进入保护模式的原因,及获取恢复QQ帐号正常使用的方法。1.可以在realme手机中出场自带的软件商店中搜索游戏中心下载安装即可。2.可在设置-应用-系统可卸载应...

取消回复欢迎 发表评论: