优化查看进度
This commit is contained in:
parent
3a46d09b8e
commit
0f7f9c1a4b
Binary file not shown.
15
main.py
15
main.py
|
@ -3,10 +3,14 @@ import random
|
||||||
import time
|
import time
|
||||||
from multiprocessing import Process
|
from multiprocessing import Process
|
||||||
import argparse
|
import argparse
|
||||||
|
|
||||||
|
from matplotlib import pyplot as plt
|
||||||
|
|
||||||
from computation import Computation
|
from computation import Computation
|
||||||
from sqlalchemy.orm import close_all_sessions
|
from sqlalchemy.orm import close_all_sessions
|
||||||
import yaml
|
import yaml
|
||||||
from controller_db import ControllerDB
|
from controller_db import ControllerDB
|
||||||
|
from 查看进度 import visualize_progress
|
||||||
|
|
||||||
|
|
||||||
def controll_db_and_process(exp_argument, reset_sample_argument, reset_db_argument):
|
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:
|
for i in process_list:
|
||||||
i.join()
|
i.join()
|
||||||
|
|
||||||
|
# 所有子进程完成后刷新最终进度
|
||||||
|
visualize_progress()
|
||||||
|
|
||||||
|
# 显示最终进度后关闭图表
|
||||||
|
plt.show()
|
||||||
|
|
||||||
def do_computation(c_db):
|
def do_computation(c_db):
|
||||||
exp = Computation(c_db)
|
exp = Computation(c_db)
|
||||||
|
|
||||||
while 1:
|
while 1:
|
||||||
time.sleep(random.uniform(0, 1))
|
time.sleep(random.uniform(0, 2))
|
||||||
is_all_done = exp.run()
|
is_all_done = exp.run()
|
||||||
if is_all_done:
|
if is_all_done:
|
||||||
break
|
break
|
||||||
|
@ -44,7 +55,7 @@ if __name__ == '__main__':
|
||||||
# 输入参数
|
# 输入参数
|
||||||
parser = argparse.ArgumentParser(description='setting')
|
parser = argparse.ArgumentParser(description='setting')
|
||||||
parser.add_argument('--exp', type=str, default='without_exp')
|
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_sample', type=int, default='0')
|
||||||
parser.add_argument('--reset_db', type=bool, default=False)
|
parser.add_argument('--reset_db', type=bool, default=False)
|
||||||
|
|
||||||
|
|
31
查看进度.py
31
查看进度.py
|
@ -1,12 +1,14 @@
|
||||||
from matplotlib import rcParams, pyplot as plt
|
from matplotlib import rcParams, pyplot as plt
|
||||||
from sqlalchemy import func
|
from sqlalchemy import func
|
||||||
|
|
||||||
from orm import db_session, Sample
|
from orm import db_session, Sample
|
||||||
|
|
||||||
|
# 创建全局绘图对象和轴
|
||||||
|
fig, ax = plt.subplots(figsize=(8, 5))
|
||||||
|
plt.ion() # 启用交互模式
|
||||||
|
|
||||||
def visualize_progress():
|
def visualize_progress():
|
||||||
"""
|
"""
|
||||||
可视化 `is_done_flag` 的分布。
|
可视化 `is_done_flag` 的分布,动态更新进度条。
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# 设置全局字体
|
# 设置全局字体
|
||||||
|
@ -29,21 +31,22 @@ def visualize_progress():
|
||||||
labels = ['未完成 (-1)', '完成(0)', '等待 (1)']
|
labels = ['未完成 (-1)', '完成(0)', '等待 (1)']
|
||||||
values = [data[-1], data[0], data[1]]
|
values = [data[-1], data[0], data[1]]
|
||||||
|
|
||||||
|
# 清空之前的绘图内容
|
||||||
|
ax.clear()
|
||||||
|
|
||||||
# 创建柱状图
|
# 创建柱状图
|
||||||
plt.figure(figsize=(8, 5))
|
ax.bar(labels, values, color=['red', 'orange', 'green'])
|
||||||
plt.bar(labels, values, color=['red', 'orange', 'green'])
|
ax.set_title('任务进度分布', fontsize=16)
|
||||||
plt.title('任务进度分布', fontsize=16)
|
ax.set_xlabel('任务状态', fontsize=14)
|
||||||
plt.xlabel('任务状态', fontsize=14)
|
ax.set_ylabel('数量', fontsize=14)
|
||||||
plt.ylabel('数量', fontsize=14)
|
ax.tick_params(axis='both', labelsize=12)
|
||||||
plt.xticks(fontsize=12)
|
|
||||||
plt.yticks(fontsize=12)
|
|
||||||
|
|
||||||
# 显示具体数量
|
# 显示具体数量
|
||||||
for i, v in enumerate(values):
|
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.pause(0.1) # 暂停一段时间以更新图表
|
||||||
plt.show()
|
|
||||||
|
|
||||||
visualize_progress()
|
# 关闭窗口时,停止交互模式
|
||||||
|
plt.ioff()
|
||||||
|
|
Loading…
Reference in New Issue