tqdm:

python自带的库,直接在程序中运行就能看到;

效果如下:

python如何看程序是不是还在运行_进度条

代码:
from tqdm import tqdm
from time import sleep

#tqdm:一个很受欢迎的进度条库,能很方便地显示迭代过程中的进度。
for i in tqdm(range(100)):
  # do something
    sleep(0.1)

rich:

需要下载依赖库

pip install rich
这款进度条不能在pycharm中显示,在windows终端(cmd)运行的时候,可以显示;

效果:

python如何看程序是不是还在运行_自定义_02

代码如下:

from rich.progress import Progress
import time

# 创建一个Progress实例
progress = Progress()

# 添加一个新的进度条任务,并设置总完成量为100
task_id = progress.add_task("[cyan]Processing...", total=100)

# 启动进度条
with progress:
    while not progress.finished:
        # 将任务进度更新1
        progress.update(task_id, advance=1)
        # 暂停0.1秒
        time.sleep(0.1)

rich升级版:(可调节样式和属性)

效果:

python如何看程序是不是还在运行_开发语言_03

代码:

# 导入rich库的Progress,BarColumn,TimeRemainingColumn和TextColumn模块,以及Python的时间模块
from rich.progress import Progress, BarColumn, TimeRemainingColumn, TextColumn
import time


# 创建自定义的文本列类,这是为了我们可以向进度任务提供自定义的描述信息
class CustomTextColumn(TextColumn):

    # 覆盖TextColumn的render方法,返回每个任务的自定义文本
    # 而这个文本,就是进度条前面那部分描述任务进度的文本信息
    def render(self, task):
        # 用Python的f-string,根据每个任务的完成情况,构造描述文本
        return f"[magenta]Custom Progress: {task.completed / task.total * 100:.2f}%"


# 定义自定义的进度条类,这是我们主要的进度条,里面可以自定义很多元素和样式
class CustomProgress(Progress):

    # 初始化方法
    def __init__(self):
        super().__init__(

            # 我们在这里定义了进度条包含的几个主要元素(列)

            # 第一列是我们上面自定义的描述任务进度的文本列
            CustomTextColumn("{task.description}"),

            # 第二列是条形图列,这是描述任务进度的主要图形
            # 可以自定义这个列的宽度(bar_width参数,None表示自动调整到合适的宽度),以及完成部分的颜色(finished_style参数,这里我们设置成了绿色)
            BarColumn(bar_width=None, finished_style="green"),

            # 第三列是显示任务完成百分比的列
            "[progress.percentage]{task.percentage:>3.0f}%",

            # 第四列是估计任务剩余时间的列
            TimeRemainingColumn(),
        )


# 创建一个自定义的进度条实例
progress = CustomProgress()

# 添加一个新的进度任务,其中,这个任务总共需要处理100个单元
task_id = progress.add_task("Processing...", total=100)

# 启动进度条,这个进度条在任务进行的过程中会一直显示在控制台的最下方
with progress:
    # 当任务未完成时,持续运行
    while not progress.finished:
        # 每次前进一步,这里是模拟你的任务在逐渐完成
        # 在实际使用中,你应该根据你的任务的实际完成情况来更新这个进度
        progress.update(task_id, advance=1)

        # 暂停0.1秒以模拟处理时间,这里仅用于示例,在实际使用中你可能不需要这个
        time.sleep(0.1)