Jupyter notebook和 Jupyter lab内核死亡问题的原因和解决方案

写在前面:之前也遇到过几次内核死亡的问题,也一直没有想解决办法。这里总结一下并提出几个解决办法。
首先明确一下jupyter出现内核死亡的原因:jupyter lab 或者 jupyter notebook 本身是一个web服务, 无法支持高并发和频繁的计算任务,对于大规模运行或高并发是不够能力处理,所以机会内核死亡。所以如果平时也习惯用pycharm,移植代码到pycharm运行就没问题了。我是因为很少用pycharm,甚至都没装pycharm。

1. 使用causalml库时,在训练模型时出现内核死亡

这里是我在训练模型时输入的数据pandas格式的,一开始训练就内核死亡,后面换成numpy格式就没问题了。所以很多其他的库也许可以借鉴一下,如果内核死亡是不是可以换一下数据格式啥的。

2. 14万行数据,执行SMOTE算法内核死亡

最开始看到内核死亡,想的也是借鉴第一个情况,把数据转成numpy 或者 list格式,但是没有效果。
后面想到一个新法子,就是先将ipynb格式的文件转成py文件,然后通过命令行运行py文件。

'''
在jupyte lab代码窗口,输入下面代码,就得到和ipynb格式同名的py文件
'''
! jupyter nbconvert --to script test.ipynb

在命令行窗口执行生成的同名py文件,就行了。
结果证明,可行!

3. 使用catboost时,调用gpu就内核崩溃

这个是我之前使用catboost模型时,如果设置task_type = ‘GPU’,训练模型就会内核死亡(数据量也不大)。当时没有想解决办法,直接放弃用该模型了。目前看来采用上面的提到转文件格式的方法,应该是没问题的。

4. 后记

前面提到,如果生成了同名的py文件,其实也可以直接在jupyter中执行下面的命令

! python test.py

不就可以执行该py文件了么, 还不用打开命令行。(! 是魔法命令,相当于在当前环境下的命令行执行代码)
但是我操作了一下发现不行,会报告一个报错如下,这是一个线程的报错,但是我的电脑是两颗至强系列的cpu,这么点数据量不应该出现这个报错。

OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata.

网上有解决办法说,在代码中添加如下代码就行(但我没成功)

'''
这里的0就是你的第几块GPU,大部分只有一个。所以选择0就行
'''
import os
os.environ["CUDA_VISIBLE_DEVICES"] = '0'

=

### 解决 Jupyter Notebook 内核无响应或崩溃问题 当遇到Jupyter Notebook内核无响应或频繁崩溃的情况时,可以从多个角度排查并解决问题。 #### 1. 检查环境配置 确保所使用的Python环境中没有冲突的包版本。如果最近进行了操作系统更新(如升级至Catalina),可能存在兼容性问题[^2]。建议创建一个新的虚拟环境来隔离潜在的问题源,并重新安装必要的依赖库。 #### 2. 增加虚拟内存分配 对于因资源不足而导致的内核死机现象,适当增加系统的虚拟内存可以帮助缓解这一状况。具体操作如下: - 右键单击“此电脑”,选择“属性” - 进入“高级系统设置” - 在“性能”部分点击“设置” - 切换到“高级”标签页下的“虚拟内存”,点击“更改” - 对应Anaconda所在磁盘分区调整页面文件大小,完成后需重启计算机生效[^4] ```bash # 创建新的Conda环境并激活 conda create --name test_env python=3.x conda activate test_env ``` #### 3. 更新或重置Jupyter组件 有时旧版软件中的Bug可能是造成不稳定的原因之一。尝试通过`pip`或`conda`命令行工具更新Jupyter及相关扩展插件;或者卸载后再全新安装这些组件以排除残留数据的影响。 ```bash # 使用Conda管理器更新JupyterLabNotebook conda update jupyterlab jupyter notebook ``` #### 4. 排除特定代码引起的异常 某些第三方模块加载失败也会引发类似的错误消息。例如,在调用OpenCV显示窗口函数(`cv2.imshow`)之前应该先确认是否已经正确导入了该库以及是否存在图形界面支持缺失等问题[^5]。 ```python import cv2 from IPython.display import display, Image import matplotlib.pyplot as plt # 替代方案:使用Matplotlib展示图像而非原生OpenCV窗口 plt.figure(figsize=(8,6)) img = cv2.imread('example.jpg') rgb_img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB) plt.imshow(rgb_img); plt.axis("off"); plt.show() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值