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开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!*
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)