From 0f7f9c1a4b9c54ea795f0d7679dbd3451314cbce Mon Sep 17 00:00:00 2001 From: Cricial <2911646453@qq.com> Date: Mon, 27 Jan 2025 01:15:15 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=9F=A5=E7=9C=8B=E8=BF=9B?= =?UTF-8?q?=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- __pycache__/查看进度.cpython-38.pyc | Bin 0 -> 1539 bytes main.py | 15 ++++++++++++-- 查看进度.py | 31 +++++++++++++++------------- 3 files changed, 30 insertions(+), 16 deletions(-) create mode 100644 __pycache__/查看进度.cpython-38.pyc diff --git a/__pycache__/查看进度.cpython-38.pyc b/__pycache__/查看进度.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7de7e9289dbf6c56d741c263678b9ce8e6d90d94 GIT binary patch literal 1539 zcmZWp-ESL35Z}GMJD=^?and$v_$YY*loJq|C!{J$ks1k}s!CBMWVv$Bw`=FZozL0Z zOXA3u3JIlzL`6bGqAkLH;8OznfDljw{{&C_gjDR*PdxETnY|NjB*xnD&fLuG%x`A* za-onzK<9$P1~L)4uY}`7KzJ2a^ae1BDE3i+%Q(==1S?td^}r|_$)5OTkSS*Zt88J! z$Xb@_)HuKut(+_88R?Dn5!jhDvx~|Fkc)|Itspx)g6PQBq{ZD!4tIh`nyq%r4~31T zUXPnDe9O^VHDXcZg-vO$I6=#2wl=cBabzfOEHibl5qaCpRnh*V3~ZFq1y~Uz1~mxC zdl69r|N0^lxTguSrVFEI!hfcZ`&!RZnm+Dj`>2bkLCsy%LCa_dcQMT@qbsGZ*1^48 zN269>!)Se(W@(P*8>CA*n2yaL;8wy5GYGW0$fxy-{92(yIyx=Vaaw8+I&lCHs>l{<}EUo1#zmF?8V!p#Dt!8eo!}1sdG^?!gz=2m6P!SG}l8!zQcNeW!7C z_UP8`;KudAk2`<;vOn1Sa(L~n;qC8-hj$_piO3L@1jpUhq2ew)6F{ zDdy`=;Q8&*7#y&jO*Bbk0RBg$MoWja0xOyV<^jZ4icknv;C8eRwRL?3eT8@)KH5ZT z^JifgAT4RQVcZmnK4E_^fW?J#mCF(1QDt*;vvR5Jt~xxp#KSe_il`E>$f*oJ{p{$@ z`)TU)t+vc9QqL7`7_^p7t0dq8z$Gw|hPI#I@S@o9VVJ5d9yU14-Ta~-x{e<$%|CXt z$><>vS9OgPOLlP)cEdYg55C=2Lmn%OKkwZe?Df+c($0)ZpavsL!K_e@73!(o(cTZx zvXROsR@DtZx;uLJrqpYpScNO4J6m2Pv%XVfzVd8<3D6(srRlP!U>s~Tz)_*oxb?B3 zpUz*jr@00Su5O())?>!oTm_e7$7hGD-g0%a)I2J!1`p#_wbquz@qL+#n4qlg#J-T4 zvjr9U%;A#MfMwxZRd~W@iCJ|k$uHfv(|ule?wi$C`c!0DGY%Mc1e3a8TSAgZK&Tdk zHd;;`F*_qo=%6}Fr;c!VL1ks8WlM9z@naTA>`A=wc&7NcGMfDV9H>r4F9JiRg)O3E z9pxVCn*NVv6p4k4B!{PnMW%2u{gDzrL-;FTf6*S7xxf+XVe`FOilVv({AFNJ;JWYl z?kWq~33!r(JV;PZ;kBZ;rd%UQ;GyHsDIWr_VG>*FURbXmOJ7}@v<7Q22x;uIB{iUt Q8jcbk!zIYe(ySN$1&5ivZ~y=R literal 0 HcmV?d00001 diff --git a/main.py b/main.py index 93d7407..fb74878 100644 --- a/main.py +++ b/main.py @@ -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) diff --git a/查看进度.py b/查看进度.py index 8a15e75..72b67f1 100644 --- a/查看进度.py +++ b/查看进度.py @@ -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() \ No newline at end of file +# 关闭窗口时,停止交互模式 +plt.ioff()