You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过with语句从另一个Python脚本调用rich.progress进度条?

解决Rich进度条拆分到独立文件后不显示的问题

问题原因

你自定义的init_progress上下文管理器仅返回了Progress实例,但没有触发Progress自身的上下文管理流程。Progress作为上下文管理器时,__enter__方法会启动进度条的渲染循环,__exit__方法会完成资源清理;直接yield实例的话,这些关键步骤没有执行,导致终端无法显示进度条。

修复方法

修改task_progress.py中的init_progress函数,在内部先进入Progress的上下文,再yield实例:

from rich.progress import *
import contextlib

@contextlib.contextmanager
def init_progress():
    # 先启动Progress的上下文管理流程
    with Progress(BarColumn(), TaskProgressColumn(), TimeElapsedColumn()) as progress:
        yield progress

额外优化(可选)

原代码中每次循环都调用add_task会创建20个独立任务,这通常不是预期行为。建议改为仅创建一个任务,在循环中更新任务的进度和描述:

import time
from task_progress import init_progress

with init_progress() as progress:
    total = 20
    # 初始化单个任务
    task = progress.add_task("[green]Processing Algorithm...", total=total)
    for x in range(total):
        # 更新进度和当前描述
        progress.update(task, advance=1, description=f"[green]Processing Algorithm-{x}.")
        time.sleep(0.1)

内容的提问来源于stack exchange,提问作者Pawan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 23:09:23