You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jupyter重连运行中内核后如何继续打印中间输出结果?

解决方案
  • 方案1:提前将标准输出重定向到日志文件
    运行训练代码前添加重定向逻辑,所有打印内容会同步写入本地日志文件,浏览器断开后也可直接在服务器端查看日志。示例代码:

    import sys
    class TeeLogger:
        def __init__(self, filename, mode='a', terminal=sys.stdout):
            self.file = open(filename, mode, buffering=1)
            self.terminal = terminal
        def write(self, message):
            self.terminal.write(message)
            self.file.write(message)
            self.flush()
        def flush(self):
            self.terminal.flush()
            self.file.flush()
    # 替换标准输出、错误输出流
    sys.stdout = TeeLogger('train_log.log', terminal=sys.stdout)
    sys.stderr = TeeLogger('train_error.log', terminal=sys.stderr)
    

    后续在服务器终端执行tail -f train_log.log即可实时查看最新输出。

  • 方案2:直接读取内核输出缓存
    若训练已经启动未提前配置日志,可在Notebook新建单元格运行以下代码,拉取内核当前已缓存的输出内容:

    import sys
    print(sys.stdout.getvalue())
    

    基于ipykernel的环境也可以直接执行魔法命令%history -o获取历史输出记录。

  • 方案3:用终端会话托管Jupyter进程
    后续启动Jupyter服务前,先在服务器上创建tmux/screen会话,将Jupyter进程放在会话内运行。浏览器断开后,重新连接服务器进入对应的tmux/screen会话,就能直接看到Jupyter服务打印的所有内核输出内容。

  • 方案4:安装内核监控扩展
    提前安装jupyterlab-kernelspy扩展,可在内核监控面板查看所有运行中内核的完整输入输出流,浏览器重连后也能拉取历史流内容。

如果当前训练已运行较长时间不想中断,优先尝试方案2获取已缓存的输出,同时可以在训练的回调逻辑中临时补充文件日志写入逻辑,避免后续输出继续丢失。

内容的提问来源于stack exchange,提问作者yahaha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 18:18:03