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

前言

        在处理大量数据或执行耗时操作时,了解代码执行的进度是至关重要的。在Python中,通过使用进度条可以有效地实现对代码执行进度的可视化展示。

        tqdm 是一个快速、可扩展的Python进度条库,能够实时显示代码执行的进度。并且它提供了简洁的API,因此开发者可以轻松地为循环、迭代器等任务添加进度条,让你一目了然地了解代码执行的进展情况。

        

基础使用

from tqdm import tqdm
import time


# 某个你需要执行的方法
def time_cut(data):
    # 每次调用,休眠data*0.1秒
    time.sleep(data * 0.1)


# 模拟一个耗时的任务,调用同一个方法10次
def some_long_task():
    for index in tqdm(range(10), desc="Processing"):
        # 模拟任务处理时间
        time_cut(index)


# 调用耗时任务函数
some_long_task()

顺序执行

from tqdm import tqdm
import time


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)

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

多进程调用

        【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)
        pbar.update(40)  # 更新进度条

        # 执行方法2
        result_2 = method_way2()
        results.append(result_2)
        pbar.update(30)  # 更新进度条

        # 执行方法3
        result_3 = method_way3()
        results.append(result_3)
        pbar.update(30)  # 更新进度条

    print(results)


# 调用顺序执行方法的函数
if __name__ == "__main__":
    data = 4
    a = multiprocessing.Process(target=tqdm_multi, args=(data, 'proess A'))
    a.start()
    a.join()

    b = multiprocessing.Process(target=tqdm_multi, args=(data, 'proess B'))
    b.start()

         其实,考虑不在子方法里输出print()也可以,请君自便吧

相关推荐

  1. 使用Python进行数据

    2024-03-30 06:08:02       45 阅读
  2. pythontqdm库不显示动态进度的问题

    2024-03-30 06:08:02       23 阅读
  3. Python

    2024-03-30 06:08:02       13 阅读
  4. 记录 | python tqdm用法_图片读取进度

    2024-03-30 06:08:02       35 阅读
  5. 如何使用Python进行数据

    2024-03-30 06:08:02       10 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-30 06:08:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-30 06:08:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-30 06:08:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-30 06:08:02       20 阅读

热门阅读

  1. 指针的运算

    2024-03-30 06:08:02       18 阅读
  2. 修改Docker Gitlab root 的密码

    2024-03-30 06:08:02       20 阅读
  3. 2023年欧亚地区网络安全态势综述

    2024-03-30 06:08:02       17 阅读
  4. IDEA:找不到String类、主类

    2024-03-30 06:08:02       17 阅读
  5. IDEA 打包jar

    2024-03-30 06:08:02       17 阅读
  6. idea常用的快捷键总结:

    2024-03-30 06:08:02       13 阅读
  7. ReactNative实现图片上传功能(兼容安卓和ios)

    2024-03-30 06:08:02       17 阅读
  8. 基于卷积神经网络的物体检测技术

    2024-03-30 06:08:02       15 阅读