首页 > 其他分享 >rich 进度条,总进度和子进度实现

rich 进度条,总进度和子进度实现

时间:2023-11-03 10:22:51浏览次数:35  
标签:task rich 和子 dic job 进度 file import progress


"""

Demonstrates the use of multiple Progress instances in a single Live display.    

"""

from pathlib import Path
import shutil
from time import sleep

from rich.live import Live
from rich.panel import Panel
from rich.progress import Progress, BarColumn, MofNCompleteColumn, TaskProgressColumn, TimeElapsedColumn
from rich.table import Table
from mfio.scanlib.scan import Scan
from collections import defaultdict
from copy import deepcopy

save_path = Path(r"C:\Users\pc\Desktop\save")
img_path = Path(r"C:\Users\pc\Desktop\2023-05-20-14-47-26")
img_list = Scan(img_path, suffixs=[".png", ".jpg", ".jpeg", ".bmp", ".pcd"]).file_list

name_file_dic = defaultdict(list)
total = len(img_list)

for file in img_list:
    idx = file.stem.split("_")[0]
    name_file_dic[idx].append(file)

task_file_dic = deepcopy(name_file_dic)

job_progress = Progress(
    "{task.description}",
    BarColumn(),
    MofNCompleteColumn(),
    TaskProgressColumn(),
    TimeElapsedColumn(),
    auto_refresh=False,
)


overall_progress = Progress(
    "{task.description}",
    BarColumn(),
    MofNCompleteColumn(),
    TaskProgressColumn(),
    TimeElapsedColumn(),
    auto_refresh=False,
)
overall_task = overall_progress.add_task("总进度", total=total)

progress_table = Table.grid()
progress_table.add_row(Panel.fit(overall_progress, title="总进度", border_style="green"))
progress_table.add_row(Panel.fit(job_progress, title="[b]子进度", border_style="red"))


with Live(progress_table, refresh_per_second=10):
    for i in range(3):
        key, value = name_file_dic.popitem()
        job_progress.add_task(f"{key}", total=len(value))
    while not overall_progress.finished:
        for job in job_progress.tasks:
            for file in task_file_dic[job.description]:
                output_file = save_path / job.description / file.relative_to(img_path)
                output_file.parent.mkdir(parents=True, exist_ok=True)
                shutil.copyfile(file, output_file)
            if not job.finished:
                job_progress.advance(job.id)
                overall_progress.advance(overall_task)
            else:
                if len(job_progress.tasks) > 3:
                    job_progress.remove_task(job.id)
                if name_file_dic:
                    key, value = name_file_dic.popitem()
                    job_progress.add_task(f"{key}", total=len(value))

image

标签:task,rich,和子,dic,job,进度,file,import,progress
From: https://www.cnblogs.com/yunhgu/p/17807024.html

相关文章

  • vue3项目 - 手写可拖拽带进度监控的文件上传组件
    1.实现原理: 原生的上传文件组件: <inputref="uploadFileRef"style="display:none"type="file"/> 自定义上传区域:  拖拽事件添加(dragover,dragenter,drop),点击事件添加(click)调用原生上传组件的click事件:uploadFileRef.value.click()监听元素上传组件的值回传事件:c......
  • Ajax + java Servlet 制作Web进度条
     运行效果图  index2.jsp <%@pagelanguage="java"pageEncoding="UTF-8"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><scripttype="text/javascript"langua......
  • access 进度条
    请在[布局视图]下设置,效果如下 OptionCompareDatabaseDimsAsIntegerPrivateSubForm_Load()'初始化变量Me.TimerInterval=10Command4.Width=0EndSubPrivateSubForm_Timer()Ifs<100Thens=s+1'自增量,可以设置自己的自......
  • 利用CSS 实现环形百分比进度展示
    先看效果图: UI设计了这样的效果,已读人数占总人数的百分比,环形展示。这里可以用echarts图表,也可以用css实现,因为我是在小程序环境下,考虑到包大小体积,采用了css实现。核心就是一行代码:background-image:conic-gradient(#e9e9e930deg,transparent30deg);这个只是一个静......
  • 【软考】系统集成项目管理工程师(八)项目进度管理【4分】
    一、过程二、规划进度管理1、定义为实施项目进度管理制定政策、程序,并形成文档化的项目进度管理计划的过程;为如何在整个项目过程中管理、执行和控制项目进度提供指南和方向;在项目执行过程中,可能需要更新进度管理计划,以反映在管理进度过程中所发生的变更2、ITO三、定义活动1、定......
  • 系统集成知识点速记口诀-进度网络分析
    关键路径不受约,最长持续时间段,最小浮动和最短,资源优化受约束,平衡延长可用性,平滑不会改进度,范围不变用压缩,加班赶工增成本,快速跟进加风险,假设不成变风险,应急储备来帮忙,蒙特卡洛是(S)曲线,挣值分析也可用,提前是负滞后正。......
  • 系统集成易混淆知识点汇总-进度管理计划、进度计划
    概念:(1)进度管理计划:项目进度管理计划是项目管理计划的组成部分,为编制、监督和控制项目进度建立准则和明确活动。(2)进度计划:进度计划是进度模型的输出,展示活动之间的相互关联,以及计划日期、持续时间、里程碑和所需资源。区别:(1)内容不同。进度管理计划是程序性计划,是一套关于如何......
  • Python 继承和子类示例:从 Person 到 Student 的演示
    继承允许我们定义一个类,该类继承另一个类的所有方法和属性。父类是被继承的类,也叫做基类。子类是从另一个类继承的类,也叫做派生类。创建一个父类任何类都可以成为父类,因此语法与创建任何其他类相同:示例,创建一个名为Person的类,具有firstname和lastname属性以及一个printna......
  • Python 继承和子类示例:从 Person 到 Student 的演示
    继承允许我们定义一个类,该类继承另一个类的所有方法和属性。父类是被继承的类,也叫做基类。子类是从另一个类继承的类,也叫做派生类。创建一个父类任何类都可以成为父类,因此语法与创建任何其他类相同:示例,创建一个名为Person的类,具有firstname和lastname属性以及一个printn......
  • 【软考高项】项目进度管理
    ......