远程Jupyter内核重连后,如何恢复print生成的单元格输出?
解决远程Jupyter内核重连后无法恢复print输出的问题
针对当前运行内核的临时补救方案
- 重定向标准输出到文件:在当前Notebook单元格执行以下代码,将后续
print内容写入远程机器的指定文件,后续可通过SSH等方式读取该文件:import sys # 可自定义文件路径,确保有写入权限 sys.stdout = open('/tmp/jupyter_print.log', 'a') - 若内核正在运行无法插入代码,可通过远程终端定位内核进程日志:
- 用
ps aux | grep jupyter找到目标内核的PID - 执行
lsof -p <内核PID>查看进程关联的输出文件路径 - 用
cat <输出文件路径>读取历史输出内容
- 用
预防此类问题的长期方案
- 启动远程内核时指定日志文件:
jupyter kernel --ip=0.0.0.0 --no-browser --stdout=/var/log/jupyter_stdout.log --stderr=/var/log/jupyter_stderr.log - 替换
print为自定义日志函数,同时输出到控制台和文件:import logging logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(message)s', handlers=[logging.FileHandler('jupyter_output.log'), logging.StreamHandler()]) # 后续用logging.info替代print输出内容 logging.info("需要输出的内容")
内容的提问来源于stack exchange,提问作者HappyFace
相关产品推荐
相关产品推荐

