python可视化:tqdm进度条控制台输出模块

文章介绍了如何在Python中顺序执行和并行处理方法,使用tqdm库显示进度条。顺序执行中,方法A、B、C依次执行,而并行处理使用ThreadPoolExecutor实现,但指出tqdm不直接支持管理多进程任务,可能导致梯形进度条问题。
摘要由CSDN通过智能技术生成

def method_A():
# 模拟方法A的执行
time.sleep(1)
return “Method A result”

def method_B():
# 模拟方法B的执行
time.sleep(1)
return “Method B result”

def method_C():
# 模拟方法C的执行
time.sleep(1)
return “Method C result”

顺序执行A、B、C三个方法,并显示进度条

def sequential_ABC():
results = []

# 使用tqdm显示进度条
with tqdm(total=100) as pbar:
    # 执行方法A
    result_A = method_A()
    results.append(result_A)
    pbar.update(30)  # 更新进度条

    # 执行方法B
    result_B = method_B()
    results.append(result_B)
    pbar.update(30)  # 更新进度条

    # 执行方法C
    result_C = method_C()
    results.append(result_C)
    pbar.update(40)  # 更新进度条

return results

调用顺序执行方法的函数

if name == “main”:
results = sequential_ABC()
print(“结果:”, results)



###  多线程调用


        这里要注意一下,如果子线程一旦使用print()输出,将导致出现**梯形进度条**



import concurrent.futures
from tqdm import tqdm
import time

并行处理的主函数

def parallel_processing(data_list, num_threads):
with concurrent.futures.ThreadPoolExecutor(max_workers=num_threads) as executor:
futures = []
for data in data_list:
if data % 2 == 0:
future = executor.submit(process_data, data)
else:
future = executor.submit(process_data1, data)
futures.append(future)

    # 使用tqdm包装executor.map以显示进度条
    results = []
    with tqdm(total=len(data_list), desc="process") as pbar:
        for future in concurrent.futures.as_completed(futures):
            result = future.result()
            results.append(result)
            pbar.update(1)

return results

你的并行处理函数

def process_data(data):
time.sleep(data) # 模拟处理数据的耗时操作
return data * 2 # 假设这里是对数据进行处理的函数

你的并行处理函数

def process_data1(data):
time.sleep(1) # 模拟处理数据的耗时操作
return data * 2 # 假设这里是对数据进行处理的函数

if name == “main”:
# 要处理的数据列表
data_list = list(range(10))

# 设置线程数量
num_threads = 4

# 调用并行处理函数
results = parallel_processing(data_list, num_threads)

# 打印结果
print("处理结果:", results)

![](https://img-blog.csdnimg.cn/direct/391611a3bb1e43bd8529e25bf33e6760.png)


![](https://img-blog.csdnimg.cn/direct/8d9b466101ed4e9f90ad9188396df6bb.png)


         **我没研究解决方案,如果有人能解决这一问题,请评论区指教**



### 多进程调用


        【tqdm】貌似不支持管理【下属多进程任务】,因此你可能需要在【tqdm】之上建立进程来管理【tqdm和与之关联的任务】,而不是在tqdm下级建立进程


        并且相同的是,tqdm与多线程一样,如果下属任务有print()操作也将导致**梯形进度条**



from tqdm import tqdm
import multiprocessing
import time

def method_way1(data):
# 模拟方法A的执行
time.sleep(data)
return f"Method1 sleep {data}"

def method_way2():
# 模拟方法A的执行
time.sleep(1)
return f"Method2 sleep 1"

def method_way3():
# 模拟方法A的执行
time.sleep(2)
return f"Method3 sleep 2"

使用tqdm显示进度条

def tqdm_multi(data, desc):
# 使用tqdm显示进度条
results = []
with tqdm(total=100, desc=desc) as pbar:
# 执行方法1
result_1 = method_way1(data)
results.append(result_1)
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!*

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值