优化查看进度

This commit is contained in:
Cricial 2025-01-27 01:15:15 +08:00
parent 3a46d09b8e
commit 0f7f9c1a4b
3 changed files with 30 additions and 16 deletions

Binary file not shown.

15
main.py
View File

@ -3,10 +3,14 @@ import random
import time
from multiprocessing import Process
import argparse
from matplotlib import pyplot as plt
from computation import Computation
from sqlalchemy.orm import close_all_sessions
import yaml
from controller_db import ControllerDB
from 查看进度 import visualize_progress
def controll_db_and_process(exp_argument, reset_sample_argument, reset_db_argument):
@ -30,11 +34,18 @@ def do_process(target: object, controller_db: ControllerDB, ):
for i in process_list:
i.join()
# 所有子进程完成后刷新最终进度
visualize_progress()
# 显示最终进度后关闭图表
plt.show()
def do_computation(c_db):
exp = Computation(c_db)
while 1:
time.sleep(random.uniform(0, 1))
time.sleep(random.uniform(0, 2))
is_all_done = exp.run()
if is_all_done:
break
@ -44,7 +55,7 @@ if __name__ == '__main__':
# 输入参数
parser = argparse.ArgumentParser(description='setting')
parser.add_argument('--exp', type=str, default='without_exp')
parser.add_argument('--job', type=int, default='1')
parser.add_argument('--job', type=int, default='4')
parser.add_argument('--reset_sample', type=int, default='0')
parser.add_argument('--reset_db', type=bool, default=False)

View File

@ -1,12 +1,14 @@
from matplotlib import rcParams, pyplot as plt
from sqlalchemy import func
from orm import db_session, Sample
# 创建全局绘图对象和轴
fig, ax = plt.subplots(figsize=(8, 5))
plt.ion() # 启用交互模式
def visualize_progress():
"""
可视化 `is_done_flag` 的分布
可视化 `is_done_flag` 的分布动态更新进度条
"""
# 设置全局字体
@ -29,21 +31,22 @@ def visualize_progress():
labels = ['未完成 (-1)', '完成(0)', '等待 (1)']
values = [data[-1], data[0], data[1]]
# 清空之前的绘图内容
ax.clear()
# 创建柱状图
plt.figure(figsize=(8, 5))
plt.bar(labels, values, color=['red', 'orange', 'green'])
plt.title('任务进度分布', fontsize=16)
plt.xlabel('任务状态', fontsize=14)
plt.ylabel('数量', fontsize=14)
plt.xticks(fontsize=12)
plt.yticks(fontsize=12)
ax.bar(labels, values, color=['red', 'orange', 'green'])
ax.set_title('任务进度分布', fontsize=16)
ax.set_xlabel('任务状态', fontsize=14)
ax.set_ylabel('数量', fontsize=14)
ax.tick_params(axis='both', labelsize=12)
# 显示具体数量
for i, v in enumerate(values):
plt.text(i, v + 0.5, str(v), ha='center', fontsize=12)
ax.text(i, v + 0.5, str(v), ha='center', fontsize=12)
# 显示图表
plt.tight_layout()
plt.show()
# 刷新绘图
plt.pause(0.1) # 暂停一段时间以更新图表
visualize_progress()
# 关闭窗口时,停止交互模式
plt.ioff()