jupyter notebook 使用过程中python莫名崩溃的原因及解决方式


Posted in Python onApril 10, 2020

最近在使用 Python notebook时老是出现python崩溃的现象,如下图,诱发的原因是“KERNELBASE.dll”,异常代码报“40000015”。

jupyter notebook 使用过程中python莫名崩溃的原因及解决方式

折腾半天,发现我启动notebook时是用自定义startup.bat方式方式启动的,bat文件的内容为

start C:\Anaconda3\python.exe "C:/Anaconda3/Scripts/jupyter-notebook-script.py"

平时双击这个bat文件就行了,如果报这个莫名的错误,是因为权限不对,需要用管理员方式运行,如图,问题解决!

jupyter notebook 使用过程中python莫名崩溃的原因及解决方式

补充知识:jupyter notebook占用内存空间过大打不开的解决办法(包括但不限于爬虫造成的)

jupyter notebook由于超过内存限制而“锁死”的解决
这两天用爬虫爬数据的时候由于print了大量的爬取内容,让notebook内存溢出停止运行,连带着localhost:8888也崩溃了。Google Chrome的处理机制应该是杀掉内存溢出的页面,所以localhost:8888刷新一下就恢复了。

jupyter notebook 使用过程中python莫名崩溃的原因及解决方式

但是!我的code找不回来了!不知道是什么机制,在文件里看到的大小只有不到45MB,但是一旦从localhost:8888里面打开,(用任务管理器看的)Chrome占用的内存就远远超过这个数字,一直飙升到3GB的时候再次弹出来内存不足的提示,同时页面被杀掉。用pycharm尝试更是失败,比Chrome还吃内存。

jupyter notebook 使用过程中python莫名崩溃的原因及解决方式

在经历了各种尝试,上网搜了也没有发现相关情况之后,自己偶然发现了解决办法:

如何打开源文件:

在ipynb文件的地方选择打开方式,用Chrome浏览器打开,页面的观感类似于网页源码,内容是json格式的。

我能想到的几种解决办法:

第一种是笨办法(核心思想:只要能够打开源文件就可以把需要的东西复制下来),把重要的代码复制出来,比如到txt文件里面,再把格式用的一些字符去掉,如果代码量不是很多可以这样做;

这是一定能成功的办法,就是麻烦了一些,就不多说了。

第二种是重新构造一个json文件(核心思想:既然我已经知道ipynb本质是json就可以仿造构建一个可以打开的ipynb),导致问题的只是一个block,所以把有问题的block之外的所有block信息复制到一个txt文件,再重命名成ipynb,用jupyter notebook解析出来即可(甚至还可以直接继续运行);

实际可行性:我是用的第二种办法,实测可行,简单快捷。要注意的是一定要把最末尾的ipynb格式信息复制上。知道ipynb构造之后,觉得自己也能写个网页打开ipynb的程序了(大误)

第三种思想是用Python直接读取ipynb文件,然后小心地把重要代码和结果还原。(核心思想:不管后缀名是什么,只要里面是json格式就可以用Python的json包load),这种方法一定要注意的一点是,要观察好json文件里面的构造,不要全部print!不要全部print!之前怎么死的还不长记性吗?只要一print之前内存溢出的block就全部玩儿完,就又有了一个被锁死的ipynb文件。

理论可行性:文件本身的大小只有几十MB,轻轻松松就能存下,内存溢出可能是因为print的内容在网页中占用的资源成倍增加。我没有尝试这么做,因为随时需要存档备份,小心脏受不了。

看到这儿基本上问题就应该解决了,下面补充一点问题来源和教训

前因后果:为什么会内存溢出

这是一个“雄心勃勃”的爬虫,要爬的东西很多,所以会长时间运行。由于微博的反爬做的很好,我不确定什么时候会被屏蔽,同时需要debug嘛,所以就隔一段时间print爬到的网页。另外为了观察进度还用了tqdm(非常好用,墙裂推荐),是为print的另一部分内容。时间积累了很久(大概两天多)就卡崩溃了。

经验教训:

1、执行正式文件的时候还是最好备份一下,这次出问题我的结果是保存在文件里面的,是code打不开了,由于是孤本所以还是有点慌的(主要是跟微博斗智斗勇那么多天不想再搞了)

2、可以试着在文件里面写入日志,简单的就print也没关系,这种长时间运行的程序还是需要考虑周全一点

附一个ipynb文件源文件格式示例:

内容是hello world!

{
“cells”: [
{
“cell_type”: “code”,
“execution_count”: 1,
“metadata”: {},
“outputs”: [
{
“name”: “stdout”,
“output_type”: “stream”,
“text”: [
“hello world!\n”
]
}
],
“source”: [
“print(‘hello world!')”
]
},
{
“cell_type”: “code”,
“execution_count”: null,
“metadata”: {},
“outputs”: [],
“source”: []
}
],
“metadata”: {
“kernelspec”: {
“display_name”: “Python 3”,
“language”: “python”,
“name”: “python3”
},
“language_info”: {
“codemirror_mode”: {
“name”: “ipython”,
“version”: 3
},
“file_extension”: “.py”,
“mimetype”: “text/x-python”,
“name”: “python”,
“nbconvert_exporter”: “python”,
“pygments_lexer”: “ipython3”,
“version”: “3.7.3”
}
},
“nbformat”: 4,
“nbformat_minor”: 2
}

以上这篇jupyter notebook 使用过程中python莫名崩溃的原因及解决方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中base64加密解密方法实例分析
May 16 Python
Python正则表达式教程之二:捕获篇
Mar 02 Python
为什么选择python编程语言入门黑客攻防 给你几个理由!
Feb 02 Python
Python Requests模拟登录实现图书馆座位自动预约
Apr 27 Python
对python产生随机的二维数组实例详解
Dec 13 Python
django orm 通过related_name反向查询的方法
Dec 15 Python
PyQt5 实现字体大小自适应分辨率的方法
Jun 18 Python
pandas DataFrame 交集并集补集的实现
Jun 24 Python
TensorFlow tf.nn.conv2d实现卷积的方式
Jan 03 Python
pytorch 利用lstm做mnist手写数字识别分类的实例
Jan 10 Python
python3.7+selenium模拟淘宝登录功能的实现
May 26 Python
python能自学吗
Jun 18 Python
jupyter lab的目录调整及设置默认浏览器为chrome的方法
Apr 10 #Python
jupyter notebook 参数传递给shell命令行实例
Apr 10 #Python
调整Jupyter notebook的启动目录操作
Apr 10 #Python
解决jupyter notebook显示不全出现框框或者乱码问题
Apr 09 #Python
jupyter 实现notebook中显示完整的行和列
Apr 09 #Python
jupyter notebook 多行输出实例
Apr 09 #Python
Python opencv相机标定实现原理及步骤详解
Apr 09 #Python
You might like
PHP中模拟链表和链表的基本操作示例
2016/02/27 PHP
非集成环境的php运行环境(Apache配置、Mysql)搭建安装图文教程
2016/04/12 PHP
thinkphp查询,3.X 5.0方法(亲试可行)
2017/06/17 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
2020/02/21 PHP
javascript开发技术大全-第1章javascript概述
2011/07/03 Javascript
javascript管中窥豹 形参与实参浅析
2011/12/17 Javascript
基于jQuery的简单九宫格实现代码
2012/08/09 Javascript
关于js注册事件的常用方法
2013/04/03 Javascript
document节点对象的获取方式示例介绍
2013/12/24 Javascript
jQuery实现单击按钮遮罩弹出对话框(仿天猫的删除对话框)
2014/04/10 Javascript
input输入框鼠标焦点提示信息
2015/03/17 Javascript
JS实现的鼠标跟随代码(卡通手型点击效果)
2015/10/26 Javascript
实例讲解使用原生JavaScript处理AJAX请求的方法
2016/05/10 Javascript
JavaScript简单实现弹出拖拽窗口(一)
2016/06/17 Javascript
再谈javascript注入 黑客必备!
2016/09/14 Javascript
JavaScript SHA1加密算法实现详细代码
2016/10/06 Javascript
javascript 单例模式详解及简单实例
2017/02/14 Javascript
Angular实现类似博客评论的递归显示及获取回复评论的数据
2017/11/06 Javascript
实现div滚动条默认最底部以及默认最右边的示例代码
2017/11/15 Javascript
vue项目里面引用svg文件并给svg里面的元素赋值
2020/08/17 Javascript
python简单程序读取串口信息的方法
2015/03/13 Python
python中字典(Dictionary)用法实例详解
2015/05/30 Python
使用python实现快速搭建简易的FTP服务器
2018/09/12 Python
Python可视化mhd格式和raw格式的医学图像并保存的方法
2019/01/24 Python
利用pyecharts读取csv并进行数据统计可视化的实现
2020/04/17 Python
python将字典内容写入json文件的实例代码
2020/08/12 Python
python 基于opencv去除图片阴影
2021/01/26 Python
一款纯css3实现的漂亮的404页面的实例教程
2014/11/27 HTML / CSS
HTML5 canvas基本绘图之绘制五角星
2016/06/27 HTML / CSS
巴西Mr. Cat在线商店:购买包包和鞋子
2019/09/08 全球购物
介绍一下linux的文件系统
2015/10/06 面试题
影视艺术学院毕业生自荐信
2013/11/13 职场文书
迎国庆演讲稿
2014/09/05 职场文书
部门经理助理岗位职责
2015/04/13 职场文书
VS2019连接MySQL数据库的过程及常见问题总结
2021/11/27 MySQL
如何避免mysql启动时错误及sock文件作用分析
2022/01/22 MySQL