jupyter notebook解决关闭浏览器后无法查看打印信息的问题

一、问题描述

在浏览器中我们关闭正在训练的模型打印后,再次打开可以看到没有任何信息输出了。除了处理缓存方法,我们可以使用python的logging输出日志。

二、代码编写

import logging
import sys
import datetime

def init_logger(filename, logger_name):
    '''
    @brief:
        initialize logger that redirect info to a file just in case we lost connection to the notebook
    @params:
        filename: to which file should we log all the info
        logger_name: an alias to the logger
    '''

    # get current timestamp
    timestamp = datetime.datetime.utcnow().strftime('%Y%m%d_%H-%M-%S')
    
    logging.basicConfig(
        level=logging.INFO, 
        format='[%(asctime)s] %(name)s {%(filename)s:%(lineno)d} %(levelname)s - %(message)s',
        handlers=[
            logging.FileHandler(filename=filename),
            logging.StreamHandler(sys.stdout)
        ]
    )

    # Test
    logger = logging.getLogger(logger_name)
    logger.info('### Init. Logger {} ###'.format(logger_name))
    return logger

# Initialize
my_logger = init_logger("./ml_notebook.log", "ml_logger")

每次打印输出如:

my_logger.info("XXX")

再如记录上一个cell的时间和输出,打印到日志的文件里,比如在第一个cell里:

%%capture out
%%timeit
a = 1+1

 然后在下一个cell里:

my_logger.info("capture & timeit: " + out.stdout)

就能知道上一个cell运行的时间和内容了。

参考:

jupyter notebook 如何在关闭浏览器后后台执行并保存结果? - 知乎 (zhihu.com)

logging — Logging facility for Python — Python 3.10.5 documentation

### 解决方案概述 Jupyter Notebook 的闪退问题可能由多种原因引起,包括依赖库版本冲突、配置文件错误以及工作目录未正确设置等问题。以下是针对不同情况的具体解决方法。 --- #### 方法一:修复 `markupsafe` 庈库引起的 ImportError 如果在运行 Jupyter Notebook 时遇到类似于以下错误: ``` ImportError: cannot import name 'soft_unicode' from 'markupsafe' ``` 这通常是由于 `markupsafe` 版本过高或不兼容造成的。可以通过降级 `markupsafe` 来解决问题[^2]。 具体操作如下: ```bash pip install markupsafe==2.0.1 ``` 此命令将安装一个与当前环境更兼容的 `markupsafe` 版本。 --- #### 方法二:重新生成并修改配置文件 有时,Jupyter Notebook 的默认配置可能导致其无法正常启动。可以尝试通过重新生成配置文件来解决这个问题[^4]。 ##### 步骤说明: 1. **生成新的配置文件** 使用以下命令生成一个新的配置文件: ```bash jupyter notebook --generate-config ``` 2. **定位配置文件路径** 上述命令会在终端打印出配置文件的位置,通常位于用户的 `.jupyter` 文件夹中。 3. **编辑配置文件** 打开生成的配置文件(一般名为 `jupyter_notebook_config.py`),取消以下行的注释,并指定一个新的工作目录: ```python c.NotebookApp.notebook_dir = r'D:\Jupyter_project' ``` 确保所填写的工作目录已提前创建好,否则可能会导致程序崩溃。 4. **调整快捷方式的目标地址** 如果使用的是桌面快捷方式启动 Jupyter Notebook,则需将其目标字段中的 `%USERPROFILE%` 替换为实际的工作目录路径。例如: ```plaintext "C:\ProgramData\Anaconda3\Scripts\jupyter-notebook.exe" D:\Jupyter_project ``` 完成上述更改后重启 Jupyter Notebook 即可验证效果。 --- #### 方法三:更新或重装 Jupyter Notebook 当现有安装存在潜在问题时,考虑升级至最新版或者完全卸载后再重新安装也是一个可行的选择[^3]。 执行以下命令以更新 Jupyter Notebook 至最新稳定版本: ```bash pip install --upgrade notebook ``` 对于彻底清理旧版本的情况,建议按照官方文档指导逐步移除相关组件后再进行全新部署。 --- #### 方法四:切换浏览器支持模式 部分情况下,默认使用的 Web 浏览器可能存在渲染异常从而引发应用关闭的现象。此时可通过强制指定其他浏览器作为前端载体的方式来规避此类风险。 添加参数 `-browser=firefox` 或者类似的选项到启动脚本里试试看是否有改善迹象;当然前提是本地已经预先安裝好了对应类型的客户端软件才行哦! --- ### 结论 综上所述,造成 Jupyter Notebook 启动失败的原因多样复杂,但从实践角度来看以上几种途径基本能够覆盖大部分常见场景下的处理需求。希望这些技巧对你有所帮助! ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值