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中的fileinput模块的简单实用示例
Jul 09 Python
使用python实现ANN
Dec 20 Python
使用Python设计一个代码统计工具
Apr 04 Python
详谈套接字中SO_REUSEPORT和SO_REUSEADDR的区别
Apr 28 Python
DES加密解密算法之python实现版(图文并茂)
Dec 06 Python
详解python tkinter教程-事件绑定
Mar 28 Python
python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)
Apr 18 Python
Python Django实现layui风格+django分页功能的例子
Aug 29 Python
解决pytorch报错:AssertionError: Invalid device id的问题
Jan 10 Python
python golang中grpc 使用示例代码详解
Jun 03 Python
Python3+selenium配置常见报错解决方案
Aug 28 Python
PyCharm Community安装与配置的详细教程
Nov 24 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+JS+rsa数据加密传输实现代码
2011/03/23 PHP
PHP+Ajax实现上传文件进度条动态显示进度功能
2018/06/04 PHP
PHP hebrev()函数用法讲解
2019/02/21 PHP
JS操作XML中DTD介绍及使用方法分析
2019/07/04 PHP
javascript编程起步(第七课)
2007/01/10 Javascript
jQuery基础知识filter()和find()实例说明
2010/07/06 Javascript
javascript重写alert方法的实例代码
2013/03/29 Javascript
js onload事件不起作用示例分析
2013/10/09 Javascript
jQuery读取和设定KindEditor值的方法
2013/11/22 Javascript
一个简单的Node.js异步操作管理器分享
2014/04/29 Javascript
JavaScript中伪协议 javascript:使用探讨
2014/07/18 Javascript
AngularJS语法详解
2015/01/23 Javascript
JavaScript插件化开发教程(六)
2015/02/01 Javascript
jquery实现submit提交表单
2015/02/03 Javascript
JavaScript控制table某列不显示的方法
2015/03/16 Javascript
jquery移动点击的项目到列表最顶端的方法
2015/06/24 Javascript
Javascript简写条件语句(推荐)
2016/06/12 Javascript
AngularJS 工作原理详解
2016/08/18 Javascript
Vue项目查看当前使用的elementUI版本的方法
2018/09/27 Javascript
JavaScript数据结构之栈实例用法
2019/01/18 Javascript
js尾调用优化的实现
2019/05/23 Javascript
JS如何在数组指定位置插入元素
2020/03/10 Javascript
《javascript设计模式》学习笔记七:Javascript面向对象程序设计组合模式详解
2020/04/08 Javascript
[07:37]DOTA2-DPC中国联赛2月2日Recap集锦
2021/03/11 DOTA
python实现k均值算法示例(k均值聚类算法)
2014/03/16 Python
python中函数默认值使用注意点详解
2016/06/01 Python
django 通过url实现简单的权限控制的例子
2019/08/16 Python
python读取Excel表格文件的方法
2019/09/02 Python
通俗易懂了解Python装饰器原理
2020/09/17 Python
python用Configobj模块读取配置文件
2020/09/26 Python
新闻学毕业生自荐信
2013/11/15 职场文书
销售助理岗位职责
2014/02/21 职场文书
小学生国旗下演讲稿
2014/04/25 职场文书
Nginx部署vue项目和配置代理的问题解析
2021/08/04 Servers
Java 超详细讲解IO操作字节流与字符流
2022/03/25 Java/Android
不想升级Win11?教你彻底锁定老版Windows系统的方法(附下载地址)
2022/09/23 数码科技