From 6d8fbdc7486d7613ac299c32d3c49e07366506d4 Mon Sep 17 00:00:00 2001 From: hailin Date: Sun, 27 Jul 2025 16:43:48 +0800 Subject: [PATCH] . --- meta_ui.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/meta_ui.py b/meta_ui.py index 81bb4cb..d6e68e3 100644 --- a/meta_ui.py +++ b/meta_ui.py @@ -26,14 +26,20 @@ def log(msg): # 写终端 + 推队列 print(msg, flush=True) LOG_Q.put(msg) -def consume_logs(dummy=None): # ✅ dummy 参数占位 - """供 Timer 调用:更新全局 LOG_TXT 并返回最新内容""" - global LOG_TXT +prev_log_value = "" # 上一帧的日志内容 + +def consume_logs(dummy=None): + """每秒更新 log_box 内容,避免 chat 阻塞 UI 刷新""" + global LOG_TXT, prev_log_value buf = deque(LOG_TXT.splitlines(), maxlen=400) while not LOG_Q.empty(): buf.append(LOG_Q.get()) LOG_TXT = "\n".join(buf) - return gr.update(value=LOG_TXT) + if LOG_TXT != prev_log_value: + prev_log_value = LOG_TXT + return gr.update(value=LOG_TXT) + return gr.update() # 无更新则不触发前端刷新 + # ───────────────────── 后端调用 ───────────────────── def backend(text, sampling): @@ -101,7 +107,7 @@ with gr.Blocks(title="调试界面") as demo: log_state= gr.State("") # 保存全部日志文本 # ────────────── 定时刷新日志 ────────────── - timer = gr.Timer(1.0, render=False) # 每秒触发一次 + timer = gr.Timer(1.0, render=True) # ✅ 这是关键 timer.tick( # ✅ 不依赖 log_state fn=consume_logs, inputs=[], # ✅ 空输入,避免绑定 UI 焦点